【发布时间】:2014-07-01 05:39:27
【问题描述】:
我使用 C 库 malloc 分配 8MB 内存,使用该内存后我使用 free 释放 8MB 内存。
但是当我再次使用malloc 分配8MB 内存时,它分配的位置与之前分配的位置相同。
如何避免这个问题,为什么会这样?
编辑:我正在实现一个测试主内存的工具,如果malloc 分配了相同的内存块,则无法检查整个内存
【问题讨论】:
-
是什么让你认为这是个问题?
-
是什么让您认为这是一个问题?您是否阅读过
free的文档? -
请解释为什么这是一个问题。如果你释放内存,你不应该挂在任何指向它的指针上。
-
这行不通。虚拟内存分页使得使用用户空间应用程序测试系统内存变得不可行——无法确保您正在测试所有内存。 (事实上,一些物理内存将被内核连接起来,因此将永远被您的应用程序测试。)
-
在有虚拟内存的操作系统中,即使malloc返回的地址不同,也没有理由认为它会被放在物理内存的不同地址中。
标签: c memory-management malloc