我是 C 和堆内存的新手,仍在努力理解动态内存分配。
我跟踪了Linux系统调用,发现如果我malloc用来请求少量的堆内存,那么内部malloc调用brk。
malloc
brk
但是如果我使用malloc请求非常大量的堆内存,则在内部malloc调用mmap。
mmap
所以必须有一个很大的区别brk和mmap,但理论上我们应该能够使用brk分配堆内存无论请求的大小。那么为什么在分配大量内存时会malloc调用mmap呢?
c linux heap-memory linux-kernel dynamic-memory-allocation
c ×1
dynamic-memory-allocation ×1
heap-memory ×1
linux ×1
linux-kernel ×1