データベースから大量のデータが取得されるため、C++ アプリケーションがメモリ不足になることがあります。32 ビットの WinXP マシンで実行する必要があります。
透過的に (ほとんどの既存のコードで) データ オブジェクトをディスクにスワップ アウトし、オンデマンドでのみメモリに読み込むことができるので、32 ビット Windows がプロセスに与える2GB に制限されませんか?
VirtualAllocとAddress Window Extensionsを見てきましたが、それが私が望むものかどうかわかりません。
また、質問者がファイルマッピングを作成し、そこにオブジェクトを作成したいというこのSOの質問も見つけました。1 つの答えplacement new
は、コードの残りの部分に対してかなり透過的であるように聞こえるものを使用することを示唆しています。
これにより、アプリケーションが物理メモリを使い果たすのを防ぐことができますか? 結局のところ、32 ビットのアドレス空間の制限がまだあるため、完全にはわかりません。それとも、これは多くのオブジェクトを作成しようとしたときに発生する別の種類の問題ですか?