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

use*_*112 5 c linux malloc memory-management sbrk

我读过高级Unix编程(以及其他一些书),Linux malloc()使用Linux系统调用sbrk()从操作系统请求内存.

我正在查看glibc malloc.c代码,我可以sbrk()在评论中看到很多提及,但在代码中没有直接引用.

sbrk()malloc()从OS请求内存时,如何/在何处引用/使用?

(这可能是我对如何从C运行时库进行系统调用的一般误解.如果是这样,我会有兴趣知道它们是如何制作的?)

int*_*jay 6

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

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