gpt4 book ai didi

c - 增长(和收缩)内存池

转载 作者:行者123 更新时间:2023-12-02 22:23:25 29 4
gpt4 key购买 nike

假设,为了问题的目的,我们有一个内存池,最初分配了 n 个 block 。但是,当达到容量时,池想要增长并变成原来大小的两倍 (2n)。

现在可以使用 C 中的 realloc 完成此调整大小操作,但是函数本身可能会返回指向不同内存的指针(旧数据已复制)。

这意味着内存池分配器返回的指针可能不再有效(因为内存可能已被移动)。

克服这个问题的好方法是什么?还是根本不可能?

最佳答案

从多个不连续的内存池中分配。当一个池已满时,分配第二个池,使其位于虚拟地址空间中的其他位置。

那么问题之一就是跟踪您的池的位置。通常,您会使用每个池中的一些空间来记账。例如,您可以保留一个指针的空间来保存所有池的简单线性链表。更复杂的分配器往往需要更多的簿记开销。

关于c - 增长(和收缩)内存池,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13353615/

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