如何查找程序的堆内存的起始和结束地址?

mrg*_*mrg 5 c unix linux

有没有办法找到堆内存的起始和结束地址.

#include<stdio.h>
void main()
{
    printf("Ending address of Heap: %x\n",sbrk(0)); 
}
Run Code Online (Sandbox Code Playgroud)

上面的代码显示了堆内存的结束地址.就像那样有任何方法可以找到堆的起始地址.

输出:

堆结束地址:8556000

fgh*_*ghj 2

在 Linux 上,您可以打开文件 /proc/self/maps,例如使用 fopen,然后读取它,直到找到如下行:

0060f000-00630000 rw-p 00000000 00:00 0 [堆]

0060f000-00630000 - 堆的地址范围