相关疑难解决方法(0)

为什么 malloc() 可以互换调用 mmap() 和 brk()?

我是 C 和堆内存的新手,仍在努力理解动态内存分配。

我跟踪了Linux系统调用,发现如果我malloc用来请求少量的堆内存,那么内部malloc调用brk

但是如果我使用malloc请求非常大量的堆内存,则在内部malloc调用mmap

所以必须有一个很大的区别brkmmap,但理论上我们应该能够使用brk分配堆内存无论请求的大小。那么为什么在分配大量内存时会malloc调用mmap呢?

c linux heap-memory linux-kernel dynamic-memory-allocation

15
推荐指数
2
解决办法
1021
查看次数