K.Maebashi's BBS

ご自由に書き込んでください。雑談も可。
テスト書き込みの類はテスト用掲示板にどうぞ

[日付順表示] [日付順インデックス] [スレッド順インデックス]

新規投稿 | 開設者ホームページへ戻る | ヘルプ

[2364] Re:ポインタ完全制覇 LIST 4-4 realloc.c
投稿者:(ぱ)こと管理人
2024/03/02 02:08:03

> ①第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 まあ、これぐらいもめる話ではあるので、深入りしないほうが無難かと思います……
[この投稿を含むスレッドを表示] [この投稿を削除]