私は、巨大なアンマネージマトリックス構造(std::vector<std::vector<T> >
)を同等の管理対象構造(cli::array<T,2>
)に再割り当てするためのコードを取得しようとしています。両方の構造体を同時にメモリに保持することができないため、ファイルに書き込んで構造体を読み戻すことを選択しました。問題は、いったん元の行列を削除すると、行列の管理対象メモリを割り当てようとしているメモリが失敗するということです。マトリックスを管理対象外から管理対象に再割り当て
イメージこれは、さまざまなランタイムのヒープと関係がある可能性があります。cpp vs clrしかし、具体的な詳細を見つけることはできません。 cppランタイムがヒープスペースを保持している可能性があります。これは、clrヒープが行列を戻すのを防ぎますか?もしそうなら、clrヒープのためのスペースを確保するために、cppランタイムにヒープスペースのクリーンアップを強制することは可能ですか?
ここで、宛先マトリックスは、ジギングされた配列ではなく、二次元配列でなければなりません。これにはサイズを変更できない問題があることはわかっています。さもなければ、私は小さな塊で行列を動かすことができるかもしれません。
ありがとうございます。
ギザギザの配列を使用することができないのは、かなりの人為的な制限です。それは確かにあなたのアドレス空間の断片化の問題を解決します。 64ビットオペレーティングシステムが簡単な回避策です。 –