|
分類:[C++/CLI]
最近、非常に大きなメモリ領域(1GB以上)を使う必要があるコードを C#, C++/CLI で書いているのですが、その際、メモリ領域の解放について、ちょっと、悩んでしまっています。例えば、C# から呼び出された C++/CLI のクラスの関数の中で、(ローカル変数として)vector で領域を500MBくらい確保した後にその関数を抜けても、ProcessExplore で見ると virtual Memory の Virtual Size の値が vector で確保した領域が解放されているにも関わらず全然変化しません。これは、恐らく、再度、vector などでメモリの領域を確保することが必要となったときのための配慮だと思うのですが、この領域を開放する方法ってないのでしょうか?
何が困っているのかというと、この処理を行った後に GetDIBSection を呼び出してDIBを作成したいのですが、残念ながら、メモリ不足ということで正常にGetDIBSection が作成されません。ちなみに、vector で領域の確保/解放をしないようにしてみると正しくGetDIBSectionが動作します。
え、vector を使わなければいいって?まぁ、そうですが、既にかなり出来上がってしまっているので可能なら何とかこのままいけると嬉しいのです。
よろしくお願いします。
|