首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >增长(和缩小)内存池

增长(和缩小)内存池
EN

Stack Overflow用户
提问于 2012-11-12 23:58:08
回答 2查看 1.3K关注 0票数 2

假设,为了解决这个问题,我们有一个内存池,其中最初分配了n个块。然而,当容量达到时,池想增长,成为它的两倍大小(2n)。

现在,这个调整大小的操作可以用C中的realloc完成,但是函数本身可能返回一个指向另一个内存的指针(复制旧的数据)。

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

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-11-13 00:06:55

从多个非连续的内存池中分配。当一个池满时,分配另一个池,允许它位于虚拟地址空间中的其他位置。

然后,问题是跟踪您的池在哪里。通常,您会使用每个池中的一些空间进行簿记。例如,您可以保留一个指针的空间,以保留所有池的一个简单的线性链接列表。更复杂的分配器往往需要更多的簿记开销。

票数 4
EN

Stack Overflow用户

发布于 2012-11-13 00:07:31

malloc不是使用realloc,而是一个新的/额外的块块(假设没有理由将由池分配器管理、返回和返回的块放在一个连续的内存块中)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13353615

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档