如何获取堆的初始地址?

时间:2014-10-04 20:42:08

标签: c memory malloc heap

我正在使用sbrk()

开发malloc的实现

如果想获取堆的初始地址,我只需调用sbrk(0)并设置指向它的指针吗?

1 个答案:

答案 0 :(得分:0)

在构建 malloc() 时,您通过调用 sbrk(n) 获得堆块,其中 n 是每个堆块的大小(必须至少与您当前的内存一样大为标题分配 + 空间)。

虽然 sbrk(0) 确实在第一次被调用时返回堆的开始,但是来自 sbrk() 的块不需要是连续的(提示:没有规则应用程序不能调用 { {1}} 本身,而且 sbrk() 从相同的地址空间分配)因此调用 mmap() 并不断向上拉伸堆将不起作用。