Re: ヒープメモリの異常な使用 ( No.1 ) |
- 名前:NDMK 日時:2019/02/03 18:50
数年前のことですが、自分も画像、音声、3Dモデルなどを多数読んでは解放を繰り返すアプリを
作っていたのですが、しばらくするとヒープエラーが発生してテクスチャが読まれないなどの問題に
悩んでいました。C++がよくわからないままスレッドを使っていたりしていたので、おそらく自分の
コードが悪いんだろうと思っていましたが、最後まで解決できませんでした。
結局、32bitアプリをあきらめ、64bitアプリに変更しました。
これでとりあえず、ヒープエラーで悩むことは無くなりました。
もし開発や配布での支障が無ければ、64bitアプリを検討されるのもよろしいかもしれません。
ただ、ログを見ると開始後35秒程度でヒープエラーになっています。それなりに多くのデータを
読んでいるのならともかく、「絶対、この程度でエラーになる量ではない(と思う)」のであれば
プログラムまたはライブラリに何か問題があるかもしれません。
今回のログは3Dモデルの読み込み時のものですが、特定のモデルで発生しやすいとかがあるなら、
別の物に差し替えて検証してみるのも手かもしれません。
|
Re: ヒープメモリの異常な使用 ( No.2 ) |
- 名前:リョウセイ 日時:2019/02/03 21:21
ご回答ありがとうございます。
エラーが治らないことは少し悔しいですが、NDMKさんの回答がなければ私の企画はすべて消失するところでした。
本当にありがとうございました。
ほぼ初めてネットで質問をしたのですがこんなに丁寧に教えてくださり
独りよがりでやっていたプログラミングもより、好きになれそうです。
本当にありがとうございました。
|
Re: ヒープメモリの異常な使用 ( No.3 ) |
- 名前:管理人 日時:2019/02/03 23:35
すみません、DXライブラリの3Dモデルファイルのロード処理は mv1ファイル以外の xファイルや
pmdファイルでは大量のメモリを使用するので最大でも 2GB弱しかメモリが使用できない 32bit アプリでは
メモリが足りなくなることがあると思います
( 当初は xファイルや pmdファイルを直接使用するのではなく、DxLibModelViewer.exe で mv1ファイルに
変換してから使用することを想定していたので、メモリを湯水のように使用する設計になっています… )
NDMKさんが仰られていますように 64bitアプリにしていただければ PC に搭載されている全てのメモリを
使用することができますので、メモリ不足になることは無いと思います m(_ _;m
> たまにゲームを終了していないのに↓のようなエラーも出ます(スレッド()の中の数字は毎回違う)
>
> スレッド(0xbb8) はコード 0 (0x0) で終了しました。
こちらは何かのスレッドが終了したことを伝えているだけのログなのでエラーではありません
|