gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 01:28:26 24 4
gpt4 key购买 nike

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

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

最佳答案

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

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

POSIX 标准还警告我们:

The behaviour of brk() and sbrk() is unspecified if an application also uses any other memory functions (such as malloc(), mmap(), free()). Other functions may use these other memory functions silently.

关于我们可以在不使用 brk() 系统调用的情况下实现 Malloc 函数吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27291697/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com