c语言在子函数中使用malloc,会自动free吗?

我的子函数返回值是一个指针,在子函数中我先用malloc定义了这个指针,然后return该指针。
那在子函数里需要free吗?如果在return之前free了 不是就不能return了
所以我感觉只要主函数所有malloc都free了,就没事。这个对吗??

C没有自动释放功能,需要手动free掉malloc的堆空间。如果malloc空间后忘记free就会造成内存泄露问题:内存泄露是一个比较麻烦的问题,要是malloc少量空间而不free,在测试阶段很难发现,而投入生产中可能就会变成大量malloc而不free,内存空间没了,然后程序就挂了
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2018-03-28
在子函数不需要free,否则子函数里做的事情就白做了!
记得在主调函数free就行!本回答被提问者采纳
第2个回答  2014-11-12
如果子函数需要return一个内部分配的空间,那么释放就归调用者来free了,否则内部free再返回已经是无效空间

不过一般不这样做,一般谁分配谁释放建议主函数分配传入然后子函数自己往里面存东西,再由主函数负责释放本回答被网友采纳
相似回答