使用BRK获取brk_start



Manual for int brk(void *end_data_segment);表示:"brk()将数据段的结束设置为end_data_segment指定的值"

如果成功,返回0,否则返回-1。

但是我如何获得我的break的初始值(如sbrk(0))?

问好,

如手册所述:

如果成功,brk()返回0。如果出现错误,返回-1,并将errno设置为ENOMEM

所以没有办法通过调用brk来获得初始值。相反,正如您注意到的,您应该使用sbrk(0):

sbrk()将程序的数据空间以增量字节递增。调用sbrk ()以0为增量可用于查找程序的当前位置休息。

没有理由期望brk也提供这种能力,当它已经由sbrk(0)提供。话虽如此,由于某些操作系统对brk/sbrk的限制,通常使用mmap来满足您的内存分配需求可能更为谨慎。

相关内容

  • 没有找到相关文章

最新更新