gpt4 book ai didi

c - malloc.c 中如何/在哪里使用 sbrk?

转载 作者:IT王子 更新时间:2023-10-29 01:19:18 26 4
gpt4 key购买 nike

我在 Advanced Unix Programming(以及其他几本书)中读到 Linux malloc() 使用 Linux 系统调用 sbrk() 来请求内存操作系统。

我正在查看 glibc malloc.c 代码,我可以在注释中看到很多提及 sbrk() 的地方,但没有在代码中直接提及。

malloc() 从操作系统请求内存时,如何/在哪里引用/使用 sbrk()

(这可能是我对如何从 C 运行时库进行系统调用的普遍误解。如果是这样,我很想知道它们是如何进行的??)

最佳答案

Glibc 的 malloc.c通过调用存储在 __morecore 全局函数指针中的函数来请求更多内存(该调用实际上使用宏 MORECORE 扩展为 __morecore)。默认情况下,它包含函数 __default_morecore 的地址,它在 morecore.c 中定义。 .此函数调用 sbrk

请注意,某些 malloc 实现可能会使用 mmap 而不是 sbrk 来获取更多内存。

关于c - malloc.c 中如何/在哪里使用 sbrk?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20863330/

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