首页 > 解决方案 > Malloc 调用系统调用

问题描述

我在测验中被问到 malloc() 库调用将始终调用 mmap() 或 brk()。答案是假的。我无法理解这怎么可能?

参考:https ://stackoverflow.com/a/5716525/14311234

标签: c

解决方案


第一次调用malloc(1)它会向内核请求一大堆内存,因为内核有它可以给你的最小内存量。然后它会给你一个字节的内存。下次你调用malloc(1)它时,它会从它分配的那个大块中给你另一个字节。以此类推,直到该块用完为止。然后它将从内核分配更多内存。


推荐阅读