文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
有用有还
堆存储器的优点就是可以占用它很长一段时间,缺点还是……可以占用它非常长的时间。
使用栈的时候,你无需操心归还存储器,因为这个过程是自动进行的。每当你离开函数,局部变量就会从栈中清除。
但堆完全不一样。一旦申请了堆上的空间,这块空间就再也不能分配出去,直到告诉 C 标准库你已经用完了。堆存储器的空间有限,如果在代码中不断地申请堆空间,很快就会发生存储器泄漏。
当程序不断地申请存储器,又不释放那些不再需要的存储器,就会发生存储器泄漏。存储器泄漏是 C 程序中最常见的错误,它们很难追踪。
调用 free() 释放存储器
malloc() 函数分配空间并给出一个指向这块空间的指针。你需要用这个指针访问数据,用完以后,需要用 free() 函数释放存储器,就像把储物柜的钥匙还给服务员,好让别人能接着用。
每次在代码中用 malloc() 函数请求堆存储,就应该有相应的代码用 free() 函数归还存储空间。虽然程序结束以后,所有堆空间会自动释放,但用 free() 显式释放你创建的所有动态存储器是一种好的做法。
看看 malloc() 和 free() 如何工作。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论