在Unix中使用sbrk系统调用

时间:2015-06-30 04:28:00

标签: c linux unix kernighan-and-ritchie

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

2 个答案:

答案 0 :(得分:2)

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

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

  

brksbrk函数是虚拟内存管理出现前几天遗留下来的历史好奇心。

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

答案 1 :(得分:1)

功能定义:void *sbrk(intptr_t increment);

  

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

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