您好,我是内存管理新手, 我只想找到找到空闲堆空间的逻辑。我觉得通过找到" 程序中断"之间的区别和" 堆栈指针"我们能得到它是否正确?如果没有,请说明并让我知道正确的逻辑。
答案 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用户空间代码中,您可以读取此文件以获取当前进程的堆大小。