c - malloc 在分配内存时是否保留更多空间?
问题描述
我在我的测试程序中观察到以下行为:
我正在做malloc()
1 MB,然后free()
在sleep(10)
. 我这样做了五次。我正在观察top
程序运行时的内存消耗。
一旦free()
-d,我预计程序的虚拟内存 (VIRT) 消耗将减少 1 MB。但实际上并非如此。它保持稳定。这种行为的解释是什么?分配内存时是否malloc()
做一些保留?
解决方案
一旦
free()
-d,我预计程序的虚拟内存 (VIRT) 消耗将减少 1MB。
好吧,C 标准不能保证这一点。它只是说,一旦你free()
记住了,你就不应该再访问它了。
内存块是实际返回到可用内存池还是保留以供将来分配由内存管理器决定。
推荐阅读
- vb.net - VB.Net 电子邮件未将副本放入已发送文件夹
- ruby-on-rails - 迁移 ActiveModel::UnknownAttributeError: 未知属性中的 Rails 错误
- java - 连接被拒绝。失败消息:javax.mail.MessagingException:无法连接
- c++ - 如何使用 Qt 5.14 MSVC2017 在 QT Creator 中进入 Qt 源代码?
- google-cloud-platform - 使用负载平衡器配置 Cloud Run 服务和 GCS 存储桶
- azure - 具有虚拟主机的 Azure dotnet 工作者是否可以具有公共 URL
- php - 数组到字符串异常 Laravel
- node.js - Knex:获取连接超时
- ios - 我们无法使用 iOS 的 Google 助理应用程序进行帐户关联
- php - 如何获取按提交时间排序的 git 存储库列表?