【发布时间】:2020-11-20 08:47:45
【问题描述】:
我正在大学学习操作系统,我的任务之一是找到malloc() 不会引起mmap() 系统调用的情况。
我使用strace linux 实用程序来跟踪系统调用,但在我的情况下,每次使用malloc() 时我都会看到mmap() 系统调用。
malloc() 是否总是调用mmap()?
谢谢
【问题讨论】:
-
请注意,您可以简单地获取和读取系统使用的任何内存分配器的源代码(或自定义的,如 jemalloc 或 tcmalloc)。这是很有启发性的。或者你可以看看informal documentation
-
malloc() 通常出于性能原因调用用户空间子分配器。如果子分配器用完,可以进行系统调用以获取更多空间。
-
我打赌 0.02 美元,微软编译器附带的
malloc()根本不会调用mmap():-) -
...或 virtualAlloc(),或类似的 API :)
标签: c++ c linux systems-programming