gpt4 book ai didi

c - 循环调用realloc的缺点

转载 作者:太空宇宙 更新时间:2023-11-03 23:46:38 24 4
gpt4 key购买 nike

我试图在 Windows 7 上用 C 实现一些数学算法,我需要反复增加数组的大小。

有时会失败,因为realloc 无法分配内存。但是如果我一开始就一次分配大量内存,它就可以正常工作。

是不是内存管理器的问题?谁能给我解释一下?

最佳答案

  1. 当您多次分配/取消分配内存时,可能会在内存中产生碎片,您可能无法获得大的连续内存块。
  2. 当您执行重新分配时,可能需要一些额外的内存来短期移动数据。

如果您的算法不需要连续内存或可以更改为在非连续内存上工作,请考虑使用数组链表(C++ 的某些链接 std::dequeue),这将避免复制数据,您的代码可能不遭受OOM。如果您知道数组的最坏情况内存需求,最好保留从一开始就分配的内存本身,因为与 realloc 相比,它可以避免分配和数据移动的成本。 .

关于c - 循环调用realloc的缺点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30976295/

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