よろしくお願いします。
現在、Windows2000上で、VisualC++6.0(SP5)で、プログラムを作成しております。
ダイアログ形式で、いくつものダイアログを重ねて、SW_SHOWで必要画面を
切り替えるようなアプリケーションを作成しております。
現在20画面ぐらいになって、画面を切り替えると、
「必要なリソースを利用できませんでした。」とメッセージボックスを表示して
タスクマネージャーで強制終了しなければならない状況になってしまいました。
VC++6.0のデバッグモードで動作させていると、
「例外処理 (初回) は KHS-AI.exe (KERNEL32.DLL) にあります: 0xE06D7363:
Microsoft C++ Exception。」を何度も表示しているようです。
この表示がどのような内容なのかを調べておりますが、一向にわかりません。
このメッセージの意味と対処方法をご存知の方、アドバイスお願いします。
>SW_SHOWで必要画面
と言ううことはその前で処理していた画面(VIEWクラス)はメモリ破棄などの作業
していないのではないですか
あまりわかっていないものがこんなことを言うのは失礼ですけど
20画面連続階層になっていてかなり巨大なメモリ確保(仮想メモリも含めて)になっ
ているのではないでしょうか
表示されているアドレスは、WINDOWs全体で動作しているアプリや実装メモリの
量などで変わってくるので、もう少し詳しい情報あげてもらえば
発言者増えると思いますよ
まずはダイアログリソースがEXE内にあるものか、DLLにあるものか
自作DLLどのくらい使っていて常にロードされているものが何個あるのか
各画面で意識的に確保しているメモリ量はどのくらいあるのか
どんなVIEWクラス使用しているのかなどです
ありがとうございます。
確かに自分でも画面表示毎にメモリの開放を行ったほうがいいと考えていました。
このあたりを改善してみて、更に問題起きるようでしたら投稿させていただきます。