gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 23:14:40 25 4
gpt4 key购买 nike

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

(void)free(data);

在这里, data只是一个指向已分配结构的指针,
data = malloc(sizeof(my_struct_t));

为什么 free的结果被投到 void ?

根据我对 C 的理解,这似乎没有意义,原因有两个:
  • 免费函数已经返回 void
  • 代码没有使用返回值(甚至没有分配给变量)

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

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

    最佳答案

    如果我们谈论的是标准 free函数,那么它的原型(prototype)是

    void free(void *ptr);

    因此, Actor 阵容完全没有用。
    现在有些猜测。

    作者可能忘记包含 stdlib.h头声明这个原型(prototype),所以编译器假设它的返回类型为 int .现在在此代码的静态分析期间,编译器警告它认为是非 void 的未使用返回值。功能。此类警告通常会通过向 void 添加强制转换来消除。 .

    关于c - 为什么将 free 的返回值转换为 void?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60625906/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com