[英]Use of sbrk system call in Unix
Unix中sbrk
系统调用的用途是什么,如何在C中使用它? 他们中的大多数人都说malloc
使用sbrk
系统调用来分配内存。 那么, sbrk
系统调用如何分配内存? sbrk的参数和返回类型是什么?
sbrk()
接受一个正整数作为参数。 它将当前进程堆的大小增加该字节数,然后将void *
返回到堆的新末端。
但是, 您正在阅读的信息已过时 。 要引用此系统调用的Mac OS X手册页:
brk
和sbrk
函数是虚拟内存管理出现之前的早期历史遗留问题。
现代系统不使用sbrk()
进行内存管理,因为它受到难以置信的限制。 特别是,它无法管理内存中不连续的堆! 相反,他们使用mmap()
系统调用来根据需要映射新的内存范围。
函数定义: void *sbrk(intptr_t increment);
sbrk()通过
increment
字节来increment
程序的数据空间。 以0增量调用sbrk()可用于查找程序中断的当前位置。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.