int brk手册(void * end_data_segment);说:“brk()将数据段的结尾设置为end_data_segment指定的值”
在成功时,它返回0,否则为-1。
但是我如何获得休息的初始值(比如sbrk(0))?
最好的问候,
答案 0 :(得分:0)
正如手册所述:
成功时,brk()返回零。出错时,返回-1,并将errno设置为ENOMEM
因此无法通过调用brk
来获取初始值。相反,正如您所注意到的,您应该使用sbrk(0)
:
sbrk()按递增字节递增程序的数据空间。打电话给sbrk() 增量为0可用于查找程序的当前位置 断裂。
当brk
已经提供此功能时,没有理由期望sbrk(0)
也提供此功能。有了这个说法,由于brk
/ sbrk
的某些操作系统的限制,一般情况下使用mmap
来满足您的内存分配需求可能更为谨慎。