虽然我知道Unix系统调用brk
和函数sbrk
的作用,但我不知道它们代表什么。有人能告诉我吗?
这来自于“断点值(break value)”。
引用: “更改是通过重新设置进程的断点值并分配适当数量的空间来完成的。断点值是数据段结束位置之后第一位置的地址。”
sbrk
中的“s”代表“空间”,因为它的参数向堆添加(或移除)<increment> 空间。 - Iguananaut仅仅阅读man页面:
brk()和sbrk()改变了程序断点的位置,这定义了进程数据段的结束位置(即,程序断点是未初始化数据段结束后的第一个位置)。增加程序断点会分配内存给进程;减少断点则会释放内存。
当值合理、系统有足够的内存并且进程没有超过其最大数据大小(参见setrlimit(2))时,brk()将数据段的结束设置为addr指定的值。
sbrk()通过increment字节增加程序的数据空间。调用具有0增量的sbrk()可用于查找程序断点的当前位置。