我正在探索系统的较低级别工作原理,并且想知道malloc
如何确定堆的起始地址。堆的偏移量是否恒定,或者是否有某种调用来获取起始地址?栈是否影响堆的起始地址?
最佳答案
sbrk 返回其添加(或删除)的字节的起始地址。在尚未分配堆的新进程中,对 sbrk 的第一次调用应返回堆的“break”部分的起始地址。如果我必须打赌,这就是使用 brk/sbrk 的 malloc 实现在第一次运行时可能会做的事情。
关于pointers - 获取当前进程堆的起始地址?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2726833/