我正在使用sbrk()
如果想获取堆的初始地址,我只需调用sbrk(0)
并设置指向它的指针吗?
答案 0 :(得分:0)
在构建 malloc()
时,您通过调用 sbrk(n)
获得堆块,其中 n
是每个堆块的大小(必须至少与您当前的内存一样大为标题分配 + 空间)。
虽然 sbrk(0)
确实在第一次被调用时返回堆的开始,但是来自 sbrk()
的块不需要是连续的(提示:没有规则应用程序不能调用 { {1}} 本身,而且 sbrk()
从相同的地址空间分配)因此调用 mmap()
并不断向上拉伸堆将不起作用。