C语言 我们可以在不使用 brk() 系统调用的情况下实现 Malloc 函数吗?



是否可以在不使用brk的情况下实现malloc库函数?我可以使用sbrk(0)找出程序中断的当前位置,然后使用sbrk(size)递增它吗?

如果是,那么为什么首先添加brk

大多数当前的 Unix 中不鼓励使用 brksbrk。相反,malloc通常匿名调用mmap(没有文件支持(,并返回页面的地址。

brksbrk假定一个连续的地址空间,现在情况已不再如此。如今,一个流程可能在不同范围内有许多映射,中间有未映射的间隙。

POSIX标准还警告我们:

如果应用程序还使用任何其他 内存函数(如malloc((,mmap((,free(((。其他函数可能会以静默方式使用这些其他内存函数。

相关内容

最新更新