您好,请问c语言在子函数中使用malloc,会自动free吗?有例子吗?

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

素胚勾勒不出你
浏览 222回答 2
2回答

SMILET

如果子函数需要return一个内部分配的空间,那么释放就归调用者来free了,否则内部free再返回已经是无效空间不过一般不这样做,一般谁分配谁释放建议主函数分配传入然后子函数自己往里面存东西,再由主函数负责释放

HUX布斯

C没有自动释放功能,需要手动free掉malloc的堆空间。如果malloc空间后忘记free就会造成内存泄露问题:内存泄露是一个比较麻烦的问题,要是malloc少量空间而不free,在测试阶段很难发现,而投入生产中可能就会变成大量malloc而不free,内存空间没了,然后程序就挂了
打开App,查看更多内容
随时随地看视频慕课网APP