我在 Advanced Unix Programming(以及其他几本书)中读到 Linuxmalloc()
使用 Linux 系统调用sbrk()
从操作系统请求内存。
我正在查看 glibcmalloc.c
代码,我可以在评论中看到很多提及sbrk()
,但在代码中没有直接提及。
从操作系统请求内存时如何/在哪里sbrk()
引用/使用?malloc()
(这可能是我对如何从 C 运行时库进行系统调用的普遍误解。如果是这样,我很想知道它们是如何进行的??)
我在 Advanced Unix Programming(以及其他几本书)中读到 Linuxmalloc()
使用 Linux 系统调用sbrk()
从操作系统请求内存。
我正在查看 glibcmalloc.c
代码,我可以在评论中看到很多提及sbrk()
,但在代码中没有直接提及。
从操作系统请求内存时如何/在哪里sbrk()
引用/使用?malloc()
(这可能是我对如何从 C 运行时库进行系统调用的普遍误解。如果是这样,我很想知道它们是如何进行的??)
Glibc 的malloc.c通过调用存储在全局函数指针中的函数来请求更多内存(该调用实际上使用扩展为__morecore
的宏)。默认情况下, this 保存 function 的地址,该地址在morecore.c中定义。该函数调用.MORECORE
__morecore
__default_morecore
sbrk
请注意,某些malloc
实现可能用于mmap
获取更多内存而不是sbrk
.