首页 > 解决方案 > malloc 在分配内存时是否保留更多空间?

问题描述

我在我的测试程序中观察到以下行为:

我正在做malloc()1 MB,然后free()sleep(10). 我这样做了五次。我正在观察top程序运行时的内存消耗。

一旦free()-d,我预计程序的虚拟内存 (VIRT) 消耗将减少 1 MB。但实际上并非如此。它保持稳定。这种行为的解释是什么?分配内存时是否malloc()做一些保留?

标签: cmallocfreedynamic-memory-allocation

解决方案


一旦free()-d,我预计程序的虚拟内存 (VIRT) 消耗将减少 1MB。

好吧,C 标准不能保证这一点。它只是说,一旦你free()记住了,你就不应该再访问它了。

内存块是实际返回到可用内存池还是保留以供将来分配由内存管理器决定。


推荐阅读