为什么要在C中强制使用free函数

问题描述 投票:2回答:4

我正在阅读一本使用C的书,并且遇到了以下一行:

(void)free (data);

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

data = malloc (sizeof (my_struct_t));

我的问题是,为什么free被强制转换为(void)free?从我对C的(有限的)理解来看,这似乎没有道理,原因有两个:

  • 免费功能已经返回void
  • 代码未使用返回值(甚至没有分配给变量)
  • 这本书写于1997年,所以我想知道这是否是某种遗产?作者提到这些示例在UNIX 4.0d上运行,但是如果您不打算使用该结果,我仍然无法想象有理由将其转换为函数。

我正在读一本使用C的书,遇到了以下内容:(void)free(data);在这里,数据只是指向已分配结构的指针,数据= malloc(sizeof(my_struct_t));我的问题是,...

c casting free void legacy-code
4个回答
1
投票

如果我们谈论的是标准free函数,则其原型为

void free(void *ptr);

2
投票

这将是一件古老的事情!


1
投票

如果这是某种遗留物


1
投票

C标准库的free() function的签名是:

© www.soinside.com 2019 - 2024. All rights reserved.