gpt4 book ai didi

memory - 我可以将映射内存提供给 malloc 吗?

转载 作者:行者123 更新时间:2023-12-04 17:35:01 24 4
gpt4 key购买 nike

假设我有一大块已用完的映射内存。它来自 mmaping 匿名内存或使用 MAP_PRIVATE。我可以 munmap 它,然后在下次我进行足够大的分配时再次使用 malloc mmap

我可以直接将内存交给 malloc 吗?我可以说“嘿 malloc,这是我映射的地址范围。将它用于堆空间。随意使用 mprotectmremap,或者甚至 munmap 如你所愿。”?

我在 Linux 上使用 glibc。

最佳答案

glibc malloc 调用 __morecore (函数指针)以获得更多内存。参见 <malloc.h> .但是,这通常不起作用,因为实现假定该函数的行为类似于 sbrk。并从一个更大的内存区域返回内存。实际上,使用 glibc malloc,使内存可供 malloc 重用的唯一现实方法是调用 munmap .

其他 malloc 实现允许捐赠内存(在某些情况下作为内部接口(interface))。比如musl的malloc有一个函数叫做__malloc_donate哪个应该满足您的要求。

关于memory - 我可以将映射内存提供给 malloc 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56997908/

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