• 締切済み

ファイルマッピング関数で失敗

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

みんなの回答

noname#208124
noname#208124
回答No.2

メモリークリーナー系は意味ありません マッピングに必要なのは物理メモリではなくプロセスの仮想メモリでの連続領域です これについては参考URLをどうぞ 繰り返すと、と言っていますが不要になった時点でUnmapViewOfFileしていますか? UnmapViewOfFileしないとmallocだけ繰り返してfreeしていないのと同じ状態です

参考URL:
http://itpro.nikkeibp.co.jp/article/COLUMN/20070129/259838/?ST=develop
  • sasuke-
  • ベストアンサー率63% (7/11)
回答No.1

これは MapViewOfFile の仕様ですのでどうしようもないです。 参考URLに回避策は書いてありますが、プログラムの構造を変える必要があるかもしれません。 プログラムの修正を最小限にという事であれば、エラーが起きた場合はCreateFileで作成しなおすとか。 試した事はないですがメモリ断片化解消ソフトもあります。フリーソフトでもあったと思います。 http://www.intercom.co.jp/memory/ 大容量のメモリを確保する事により、メモリの使用域をスワップに追いやると、ある程度メモリ断片化は解消されますが、実用的かどうかは不明です。

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

関連するQ&A