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

2024-11-28 19:40:52
推荐回答(3个)
回答1:

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

回答2:

在子函数不需要free,否则子函数里做的事情就白做了!
记得在主调函数free就行!

回答3:

如果子函数需要return一个内部分配的空间,那么释放就归调用者来free了,否则内部free再返回已经是无效空间

不过一般不这样做,一般谁分配谁释放建议主函数分配传入然后子函数自己往里面存东西,再由主函数负责释放