返回介绍

有用有还

发布于 2024-10-10 23:21:29 字数 738 浏览 0 评论 0 收藏 0

堆存储器的优点就是可以占用它很长一段时间,缺点还是……可以占用它非常长的时间。

使用栈的时候,你无需操心归还存储器,因为这个过程是自动进行的。每当你离开函数,局部变量就会从栈中清除。

但堆完全不一样。一旦申请了堆上的空间,这块空间就再也不能分配出去,直到告诉 C 标准库你已经用完了。堆存储器的空间有限,如果在代码中不断地申请堆空间,很快就会发生存储器泄漏。

当程序不断地申请存储器,又不释放那些不再需要的存储器,就会发生存储器泄漏。存储器泄漏是 C 程序中最常见的错误,它们很难追踪。

调用 free() 释放存储器

malloc() 函数分配空间并给出一个指向这块空间的指针。你需要用这个指针访问数据,用完以后,需要用 free() 函数释放存储器,就像把储物柜的钥匙还给服务员,好让别人能接着用。

每次在代码中用 malloc() 函数请求堆存储,就应该有相应的代码用 free() 函数归还存储空间。虽然程序结束以后,所有堆空间会自动释放,但用 free() 显式释放你创建的所有动态存储器是一种好的做法。

看看 malloc() 和 free() 如何工作。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文