繁体   English   中英

在Unix中使用sbrk系统调用

[英]Use of sbrk system call in Unix

Unix中sbrk系统调用的用途是什么,如何在C中使用它? 他们中的大多数人都说malloc使用sbrk系统调用来分配内存。 那么, sbrk系统调用如何分配内存? sbrk的参数和返回类型是什么?

sbrk()接受一个正整数作为参数。 它将当前进程堆的大小增加该字节数,然后将void *返回到堆的新末端。

但是, 您正在阅读的信息已过时 要引用此系统调用的Mac OS X手册页:

brksbrk函数是虚拟内存管理出现之前的早期历史遗留问题。

现代系统不使用sbrk()进行内存管理,因为它受到难以置信的限制。 特别是,它无法管理内存中不连续的堆! 相反,他们使用mmap()系统调用来根据需要映射新的内存范围。

函数定义: void *sbrk(intptr_t increment);

sbrk()通过increment字节来increment程序的数据空间。 以0增量调用sbrk()可用于查找程序中断的当前位置。

http://linux.die.net/man/2/sbrk

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM