free()是否立即释放内存

时间:2015-06-16 06:24:47

标签: memory-management malloc vxworks

在我的程序中,我使用malloc来分配大量内存(几百mbs,一次只有25mb到75mb),我随后释放了一些块,然后又重新分配了一些。我的问题是当我使用free()来释放内存时,它是否会立即释放相关的内存块,或者只是将其标记为释放内存。如果它只是标记为以后释放,是否有一些标准的C库函数来强制它立即释放。

我实际上需要开发我的程序,以便在linux和vxworks之间移植。在Vxworks中,在我正在使用的一个库(vsipl)中,我发现“免费”不会在通话时立即释放。

1 个答案:

答案 0 :(得分:0)

答案取决于malloc和免费实施。但是,我可以肯定地说,在几乎任何实现中,内存都不会被释放。相反,它会回到一个池中,在那里它可以被进程重用。

如果使用大块内存,通常最好使用操作系统内存功能并进行自己的内存管理。但是,将页面映射到内存中并不是一个好主意。