小编Ada*_*ton的帖子

为什么将 free 的返回值转换为 void?

我正在阅读一本使用 C的书(Butenhof 的POSIX 线程编程,1997 年),我遇到了以下行:

(void)free(data);
Run Code Online (Sandbox Code Playgroud)

这里,data只是一个指向已分配结构的指针,

data = malloc(sizeof(my_struct_t));
Run Code Online (Sandbox Code Playgroud)

为什么是free被强制转换的结果void

根据我对 C 的理解,这似乎没有意义,原因有两个:

  • free 函数已经返回 void
  • 代码没有使用返回值(它甚至没有被分配给一个变量)

这本书写于 1997 年。这是某种遗产吗?

作者提到这些示例是在 Digital Unix 4.0d 上运行的,但如果您不打算使用该结果,我仍然无法想象有理由强制转换该函数的结果。

c free casting legacy-code void

84
推荐指数
3
解决办法
7053
查看次数

标签 统计

c ×1

casting ×1

free ×1

legacy-code ×1

void ×1