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

我已经阅读过高级Unix编程(以及其他一些书),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