プロが教えるわが家の防犯対策術!

MapViewOfFileでファイルマッピングしてますが、これを複数回繰り返すと、メモリが足りない旨のエラーがでます。
いろいろ調べると、連続したメモリ領域が確保できないためにエラーとなるとありますが、これを回避する方法はありますでしょうか?
できればあまりプログラムの構造等を変えたくないので、別の関数やメモリ断片化を改善する方法などありましたらご教授いただければと思ってます。

A 回答 (2件)

メモリークリーナー系は意味ありません


マッピングに必要なのは物理メモリではなくプロセスの仮想メモリでの連続領域です
これについては参考URLをどうぞ

繰り返すと、と言っていますが不要になった時点でUnmapViewOfFileしていますか?
UnmapViewOfFileしないとmallocだけ繰り返してfreeしていないのと同じ状態です

参考URL:http://itpro.nikkeibp.co.jp/article/COLUMN/20070 …
    • good
    • 0

これは MapViewOfFile の仕様ですのでどうしようもないです。


参考URLに回避策は書いてありますが、プログラムの構造を変える必要があるかもしれません。
プログラムの修正を最小限にという事であれば、エラーが起きた場合はCreateFileで作成しなおすとか。

試した事はないですがメモリ断片化解消ソフトもあります。フリーソフトでもあったと思います。
http://www.intercom.co.jp/memory/

大容量のメモリを確保する事により、メモリの使用域をスワップに追いやると、ある程度メモリ断片化は解消されますが、実用的かどうかは不明です。

参考URL:http://support.microsoft.com/kb/830783/ja
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!