版权所有 © 2014 tutorialspoint
brk, sbrk - 更改数据段大小
#include <unistd.h> int brk(void *end_data_segment); void *sbrk(intptr_t increment);
brk() 将数据段的末尾设置为 end_data_segment 指定的值,当该值合理时,系统确实有足够的内存,并且进程不会超过其最大数据大小(参见 setrlimit(2))。
sbrk() 将程序的数据空间增加 increment 字节。sbrk() 不是系统调用,它只是一个 C 库包装器。使用增量为 0 调用 sbrk() 可以用来查找程序中断的当前位置。
成功时,brk() 返回零,sbrk() 返回指向新区域起始位置的指针。发生错误时,返回 -1,并将 errno 设置为 ENOMEM。
brk() 和 sbrk() 在 C 标准中未定义,并且故意从 POSIX.1 标准中排除(参见第 B.1.1.1.3 和 B.8.3.3 段)。
各种系统对 sbrk() 的参数使用各种类型。常见的有 int、ssize_t、ptrdiff_t、intptr_t。
execve (2)
getrlimit (2)
广告