リリースモードでCImageが壊れます…

解決


ここ  2006-03-31 00:11:47  No: 61084

複数のデータファイルを読み込んできて内部で画像を作り、CImageを通して吐き出すプログラムを組んでいます。

データファイル読み込み部分は、コモンダイアログで行っており、
OFN_FILEMUSTEXIST | OFN_HIDEREADONLY | OFN_EXPLORER | OFN_ALLOWMULTISELECT
をオプションにつけて複数ファイルに対応しています。

デバッグモードで行うと問題ないのですが、リリースモードにした場合、読み込みファイルが十数個になった辺りで唐突にCImageがエラーを起こします。
(十個以内程度であれば、やはり問題なく動作しています)

エラーが出るのは、CImage.Save()で、返り値にたどり着く以前に落ちてしまっています。
具体的にはCImage::CInitGDIPlus::ReleaseGDIPlus()関数内の
EnterCriticalSection(&m_sect);
のm_sectがとれずにアクセス違反になっています。CImageのインスタンス自体は存在しているのですが、複数ファイルを読み込んだ瞬間にビットマップの中身が0になることがあるため、壊れているのではないかと思われます。

デバッグモードとリリースモードでは実行速度が10倍くらい違うので、できればリリースモードの速度がほしいです。
何か情報お持ちの方、アドバイス等お願いします。


ここ  2006-04-04 19:06:17  No: 61085

最大限に単純化したプログラムに直すと、エラーは出ませんでした。
どうもCImageの使い方を間違っているような気がします…


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加