gpt4 book ai didi

c++ - 分配大块连续内存——做还是不做?

转载 作者:可可西里 更新时间:2023-11-01 16:12:57 26 4
gpt4 key购买 nike

我一直坚信分配大块连续内存不是一个好习惯。很明显,如果内存碎片发挥作用,您可能会遇到麻烦,在大多数情况下不能肯定地排除这种情况(尤其是在设计为服务等的大型项目中)。

最近我遇到了 ITK图像处理库并意识到,他们(实际上)总是将图像数据(甚至是 3D - 这可能是巨大的)分配为一个连续的 block 。有人告诉我这应该不是问题,至少对于 64 位进程而言。但是,除了由于较大的虚拟地址空间可能会延迟出现内存问题之外,我没有看到 64 位和 32 位进程之间的系统差异。

进入正题:我想知道在处理大量数据时什么是好的做法:简单地将其分配为一个大块,或者最好将其分成更小的 block 进行分配?

由于问题当然是系统特定的,所以我想将其限制为 native (非托管,无 CLR)C++,尤其是在 Windows 下。但是,如果可能的话,我也会对任何更一般性的评论感兴趣。

最佳答案

这个问题几乎看起来很荒谬......让我改写一下来说明:

If you need a large block of memory and are worried about fragmentation, should you just fragment it yourself?

您自己将其分段而不是让系统内存管理器为您分段不会获得任何好处。系统在这方面非常擅长,您不可能做得更好。

话虽这么说,如果在所有条件都相同的情况下,您可以完成相同的任务但分解成合理的片段,则可能值得进行概要分析,看看您是否能有所收获。但总的来说,您不会从合理意义上获得任何好处——您将无法超越操作系统。

关于c++ - 分配大块连续内存——做还是不做?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11306719/

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