int brk(void *end_data_segment)的手册;说明:"brk()将数据段的末尾设置为end_data_segment指定的值“
如果成功,则返回0,否则返回-1。
但是如何获得中断的初始值(如sbrk(0))?
诚挚的问候,
发布于 2013-01-14 03:46:01
正如手册所述:
如果成功,brk()返回零。出错时,返回-1,并将errno设置为ENOMEM
因此,无法通过调用brk来获取初始值。相反,正如您所注意到的,您应该使用sbrk(0)
sbrk()以字节为单位递增程序的数据空间。可以使用增量为0的调用sbrk()来查找程序中断的当前位置。
当sbrk(0)已经提供此功能时,没有理由期望brk也提供此功能。话虽如此,由于brk/sbrk的某些操作系统的限制,通常使用use mmap来满足您的内存分配需求可能更为谨慎。
https://stackoverflow.com/questions/14307381
复制相似问题