c - Unix 中 sbrk 系统调用的使用

标签 c linux unix kernighan-and-ritchie

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

最佳答案

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

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

The brk and sbrk 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/

相关文章:

在C中更改指针字符串数组中的值

c - 波特率为 9600 的串行读写,无奇偶校验,数据位 8 和停止位 2。无法与设备通信

linux - 带有后台进程的 YAD 多进度条 (bash)

node.js - Geddy CLI 在 SSH 丢弃时关闭

file - 不使用 sed、awk 或 uniq 删除文件中的重复条目

c++ - 使用 fork() 创建多个进程,无需使用 exit() 或 wait() 即可与管道通信

c - 请解释一下下面的C代码?

将用户输入转换为字符数组,并过滤​​其他字符中的字母?

PHP - LDAP 搜索偶尔通过 TLS/SSL 工作

c - 如何在linux中通过C程序打开新终端