You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何释放带有函数指针成员的结构体?

问题解答

你完全不用为函数指针的释放问题焦虑,核心原因如下:

  • 函数指针存储的是代码段中函数的内存地址,这块内存并非通过malloc/calloc/realloc等堆分配函数申请,根本不需要手动释放。
  • 当你调用free(e)时,只会释放ExampleNew里通过malloc申请的堆内存(包含结构体本身以及紧跟其后的double数组内存),不会触及le_fun指向的函数代码区域,完全不会触发未定义行为。

你的示例代码中,test函数的写法是完全正确的,free(e)已经完成了所有必要的内存释放操作,不需要额外处理le_fun成员。

另外你提到的“创建指向该函数指针的指针”确实没有必要——函数指针本身只是结构体里的一个普通指针变量,它占用的内存属于结构体的堆内存空间,结构体被释放时,这个变量的内存会被回收,但它指向的函数代码不会受到任何影响。

内容的提问来源于stack exchange,提问作者Gideon Kogan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 22:42:34