在Unix中使用sbrk
系统调用有什么用?它如何在C中使用?他们中的大多数人都说malloc
使用sbrk
系统调用来分配内存。那么,sbrk
系统调用如何分配内存?什么是sbrk的参数和返回类型?
答案 0 :(得分:2)
sbrk()
将正整数作为参数。它通过该字节数增加当前进程堆的大小,然后将void *
返回到堆的新端。
但是,您正在阅读的信息已过时。引用此系统调用的Mac OS X手册页:
brk
和sbrk
函数是虚拟内存管理出现前几天遗留下来的历史好奇心。
现代系统不使用sbrk()
进行内存管理,因为它非常有限。特别是,它无法管理内存中不连续的堆!相反,他们使用mmap()
系统调用来根据需要映射新的内存范围。
答案 1 :(得分:1)
功能定义:void *sbrk(intptr_t increment);
sbrk()将程序的数据空间增加
increment
个字节。以增量0调用sbrk()可用于查找程序中断的当前位置。