gpt4 book ai didi

c - 如果我使用 mmap 而不是 malloc 分配内存会怎样?

转载 作者:IT王子 更新时间:2023-10-29 00:17:20 24 4
gpt4 key购买 nike

与使用 malloc 相比,使用 mmap(使用 MAP_PRIVATE 和 MAP_ANONYMOUS)分配内存有什么缺点?对于函数作用域中的数据,无论如何我都会使用堆栈内存,因此不会使用 malloc.

我想到的一个缺点是对于动态数据结构,例如树和链表,您经常需要分配和释放小块数据。使用 mmap 会很昂贵,原因有两个,一个是在 4096 字节的粒度上分配,另一个是需要进行系统调用。

但是在其他场景下,你觉得mallocmmap好吗?其次,我是否高估了 mmap 对于动态数据结构的劣势?

mmap 优于 malloc 我能想到的一个优点是,当您执行 munmap 时,内存会立即返回给操作系统,而使用 malloc/free,我猜数据段断点之前的内存永远不会返回,但会保留以供重复使用。

最佳答案

是的,mallocmmap 好。它更容易使用,更细粒度,更便携。最后,无论如何它都会调用 mmap

如果您开始使用 mmap 进行日常内存管理,您将希望实现某种方式将其分成比页面更小的 block ,最终您将重新实现 malloc -- 可能以一种次优的方式。

关于c - 如果我使用 mmap 而不是 malloc 分配内存会怎样?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8870008/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com