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

标签 c linux memory-management malloc sbrk

我在 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/

相关文章:

c - C编程的良好礼仪

c - 从C中的动态数组回收内存

c - C语言中如何交换十六进制数?

c - 在 C 中使用 crypt 进行简单密码比较

c - 宏名称必须是标识符

linux - 解析 shell 脚本参数

c - 改进 Windows 应用程序中的堆内存使用情况报告

c - 64位计算机中INT的最大值

c - 监控chattr变化

java - 如何在intellij idea IDE中运行javafx应用