找到堆空间的逻辑可用

时间:2014-03-24 08:29:23

标签: c linux memory-management

您好,我是内存管理新手,            我只想找到找到空闲堆空间的逻辑。我觉得通过找到" 程序中断"之间的区别和" 堆栈指针"我们能得到它是否正确?如果没有,请说明并让我知道正确的逻辑。

1 个答案:

答案 0 :(得分:2)

Linux下的内存布局是一个复杂的野兽,我认为你通常不应该关心可用的堆:这是虚拟内存的目的之一。每个进程都看到一个扁平的大内存空间。

关于你提出的解决方案,我认为这不正确,因为如下所述:http://duartes.org/gustavo/blog/post/anatomy-of-a-program-in-memory/从BSS段结束开始,肝脏就会长大。

您可以从终端轻松获取进程的堆大小(本例中为22088):

cat /proc/22088/maps | grep heap
7f5082180000-7f5082ac7000 rw-p 00000000 00:00 0                          [heap]

从C用户空间代码中,您可以读取此文件以获取当前进程的堆大小。