私は、連続したメモリの大きなブロックを割り当てることは良い習慣ではないと常に確信してきました。メモリの断片化が発生すると、問題が発生する可能性が高いことは明らかです。ほとんどの場合、確実に排除することはできません (特に、サービスなどとして設計された大規模なプロジェクトでは)。
最近、私はITK画像処理ライブラリに出くわし、(事実上) 常に画像データ (3D でさえ、巨大かもしれない) を 1 つの連続したブロックとして割り当てることに気付きました。少なくとも 64 ビット プロセスでは、これは問題にならないはずだと言われました。ただし、64 ビット プロセスと 32 ビット プロセスの間に体系的な違いは見られませんが、仮想アドレス空間が大きいためにメモリの問題が遅れて発生する可能性があるという事実があります。
要点: 大量のデータを処理する場合、どのような良い方法があるのだろうか? 単純に 1 つの大きなブロックとして割り当てるか、割り当てのために小さな断片に分割する方がよいでしょうか?
もちろん、質問はシステム固有のものであるため、特にWindowsではネイティブ(アンマネージ、CLRなし)C++に制限したいと思います。ただし、可能であれば、より一般的なコメントにも興味があります。