gpt4 book ai didi

c - 混合使用 mmap(2) 和 malloc(3) 的安全方法需要 : the result of mmap(2) must be continuous

转载 作者:行者123 更新时间:2023-11-30 17:43:03 28 4
gpt4 key购买 nike

我所做的是一个垃圾收集器,使用mmap(2)为用户空间分配空间,这就要求最初分配时可以从任何地方开始,但是后面的分配地址应该是与之前的分配连续,如下所示:

page_size = getpagesize();
heap.start_addr = mmap(NULL, page_size, PROT_READ|PROT_WRITE,
MAP_ANON|MAP_PRIVATE, 0, 0);
heap.size = page_size;

//when we need more spaces
mmap(heap.start_addr + heap.size, page_size, PROT_READ|PROT_WRITE,
MAP_ANON|MAP_PRIVATE|MAP_FIXED, 0, 0);//have MAP_FIXED set
heap.size += page_size;

但是当我们进行GC时,我们可能需要一些辅助数据结构来存储一些信息,我们想使用malloc(3)来为我们分配空间,但我不知道这样是否可行可能会导致一些冲突导致 mmap(2) 失败,最好的方法是什么?

最佳答案

我明白了,所以最好的、可移植的方法是使用一些不需要连续内存的算法,对吗? – xudifsd

是的。例如,malloc-ed 空间在开销中有一个指针,它指向下一个可用空间,以便 malloc 知道下一个在哪里搜索空间 – texasbruce

关于c - 混合使用 mmap(2) 和 malloc(3) 的安全方法需要 : the result of mmap(2) must be continuous,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20323443/

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