【发布时间】:2021-01-09 17:30:25
【问题描述】:
我是 C 和堆内存的新手,仍然难以理解动态内存分配。
跟踪Linux系统调用,发现如果我使用malloc请求少量堆内存,那么malloc内部调用brk。
但是如果我使用malloc 请求非常大的堆内存,那么malloc 在内部调用mmap。
所以brk和mmap之间肯定有很大的区别,但是理论上我们应该可以使用brk来分配堆内存而不管请求的大小。那么为什么malloc在分配大量内存的时候会调用mmap呢?
【问题讨论】:
标签: c linux linux-kernel heap-memory dynamic-memory-allocation