K.Maebashi's BBS 投稿フォーム
ハンドル名
件名
Link
>>>>data.cpItem[i] = malloc(sizeof(char) * 64); >> >>realloc() の第一引数を、NULL にすれば、malloc() と同じ動作をします。 >>よって、realloc(NULL,sizeof(char) * 64); でも問題ありません。 > >いや、もちろんそれは知っていますが、スタイルとしてどちらを取るかという >問題です。 >もともと、realloc()の第一引数をNULLにすればmalloc()と同じ動作をする、 >という仕様は、最初のメモリ確保と2回目以降のメモリ確保とで別々のコードを >記述する手間を避けるためのものでしょう。 > >ですから、この例で言えば、data.cpItemの指す先を確保した際、 >その中身を全部NULLに初期化しておけば、 > > data.cpItem[i] = realloc(data.cpItem[i],sizeof(char) * 64); > >と書けば、このポインタの指す先にデータが来るかどうかわからないような >時、重複したコードを書かなくてよくなるわけです。 >この仕様自体はそれなりに便利なものだとは思うのですが(でもこれも >realloc()の仕様としてはオーバースペックだという意見もありうるわけですが)、 >最初から第一引数に定数のNULLを渡すくらいなら、malloc()を使うべきでしょう。 > >…が、既にかずまさんからツッコミが入ってますが、まきじさんのコードだと、 >2回目のrealloc()でも第一引数にNULL渡してますね…ケアレスミスだとは思いますが。 >これは私は気付いていませんでした。
spamよけのため、ここに「ほげぴよ」と入力してください。
削除パスワード :
クリック!