K.Maebashi's BBS 投稿フォーム
ハンドル名
件名
Link
>> ①第4章、List 4-4 realloc.c(p238)でint型の値(数値)を入力しても、 >>17行目〜19行目のprintf("variable_array[%d]..%d¥n", i, variable_array[i]);が >>表示されません。 > >このプログラムは、数値を入力するwhileループが11~15行目にあり、 >そのwhileループが終わった後、17~19行目に、配列の内容を表示する >forループがあります。whileループが終わってからforループが始まるので、 >値(数値)を入力するたびに何かが表示されるわけではありません。 > >このプログラムは、 >①ユーザが数値をいくつか入力する。いくつ入力するかはわからない。 >②ユーザが数値の入力を終えたら、入力された数値を全部表示する。 >というものです。①が終わってから②を実行します。 >①でユーザがいくつ数値を入力するかわからないから、realloc()で >配列を伸ばしていく、というのが趣旨です。 > >①で、入力を終えるには、Windowsなら、数値をいくつか入力後、 >Ctrl+Z を押してからENTERを押してください。 > >> ②List4-3,4-4でfree(variable_array);と私は記述を加えました。 >>本章でfree()を使われていないのはどのような理由からでしょうか。 >>入門者向け学習サイトでは「必ずfree()」,「プログラム終了時に消える」、 >>様々な事が書かれています。 > >それについては25年くらい前にここに書きました。 >https://kmaebashi.com/programmer/c_yota/malloc.html > >WindowsでもLinuxでも、まともなOSならプログラム終了時にはfree()しなくても >解放してくれるので、たとえばライブラリとして再利用することなど考えられない >書籍のサンプルコードでは、free()は不要だと私は考えています。 > >当時のfj.comp.lang.cのやりとりも検索したら残っていました。 >https://groups.google.com/g/fj.comp.lang.c/c/G4HRnHTdImg?pli=1 > >まあ、これぐらいもめる話ではあるので、深入りしないほうが無難かと思います……
spamよけのため、ここに「ほげぴよ」と入力してください。
削除パスワード :
クリック!