我一直坚信分配大块连续内存不是一个好习惯。很明显,如果内存碎片发挥作用,您可能会遇到麻烦,在大多数情况下不能确定排除(尤其是在设计为服务等的大型项目中)。
最近我偶然发现了ITK图像处理库,并意识到它们(实际上)总是将图像数据(甚至是 3D - 这可能是巨大的)分配为一个连续的块。有人告诉我这应该不是问题,至少对于 64 位进程而言。但是,我看不出 64 位和 32 位进程之间的系统差异,除了由于较大的虚拟地址空间可能会延迟内存问题。
言归正传:我想知道在处理大量数据时有什么好的做法:简单地将其分配为一个大块,还是更好地将其分成更小的块进行分配?
由于问题当然是特定于系统的,因此我想将其限制为本机(非托管,无 CLR)C++,尤其是在 Windows 下。但是,如果可能的话,我也会对任何更一般的评论感兴趣。