私はCを使用した本(Butenhofによるプログラミング、POSIXスレッドによるプログラミング、1997)を読んでいて、次の行に出くわしました。
(void)free(data);
ここでdata
は、割り当てられた構造体への単なるポインタですが、
data = malloc(sizeof(my_struct_t));
free
キャストされた結果はなぜvoid
ですか?
Cについての私の理解から、これは2つの理由で意味をなさないようです:
- 無料の関数はすでに戻ります
void
- コードは戻り値を使用していません(変数に割り当てられていません)
本は1997年に書かれました。これはある種のレガシーなものですか?
著者は、例がDigital Unix 4.0dで実行されたと述べていますが、その結果を使用しないのであれば、関数の結果をキャストする理由を想像することはできません。
free()
、エミュレートする必要のない本の奇妙なものとして扱います。昔は半関連性がありましたが、もう関連性はありません。