sbrk
系统调用在 Unix 中有何用途?在 C 中如何使用它?大多数人说malloc
使用sbrk
系统调用来分配内存。那么,sbrk
系统调用是如何分配内存的呢? sbrk 的参数和返回类型是什么?
最佳答案
sbrk()
采用正整数作为参数。它将当前进程堆的大小增加了该字节数,然后将 void *
返回到堆的新末尾。
但是,您正在阅读的信息已过时。引用此系统调用的 Mac OS X 手册页:
The
brk
andsbrk
functions are historical curiosities left over from earlier days before the advent of virtual memory management.
现代系统不使用 sbrk() 进行内存管理,因为它非常有限。特别是,它无法管理内存中不连续的堆!相反,他们使用 mmap()
系统调用来根据需要映射新的内存范围。
关于c - Unix 中 sbrk 系统调用的使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31129563/