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
来满足您的内存分配需求可能更为谨慎。