• 締切済み

VC++6.0 リリース版で異常終了

cherry3の回答

  • cherry3
  • ベストアンサー率39% (18/46)
回答No.3

ykkw_2001さんも答えてますが、 デバッグ版とリリース版では、実行時に 未初期化領域(変数)に入る初期値がそれぞれ違うので、 確保した領域や変数など、使用前にしっかりと 初期化することをお勧めします。

mynee
質問者

補足

ViewやDocなど主要クラスは確認してみましたが変化はありませんでした。 あまり関係のなさそうな他のクラスも一応全てチェックしてみます。 ところで関数に初期化はあるんでしょうか。

関連するQ&A

  • VC++とアプリケーション上の実行の違い

    VC++で作ったプログラムをデバッガ上で起動した場合と、ビルドにより出来た実行ファイルを直接起動した場合とでは、違いがあるのでしょうか? 具体的にはデバッガ上でプログラム中止時にアクセス違反の例外がでていたのですが、動作は正常だったため、試しにアプリケーションから直接起動したところ、処理速度がかなり落ちてしまいました。勿論例外の警告も出ませんでした。 その後デバッガ上で起動しても同様に処理速度が落ちます。 アクセス違反の例外が出ているアプリケーションをVCを通さず実行するとPC自体の設定か何かを壊してしまったりするのでしょうか? ちなみにアプリケーションは動画の制御であり、従来はコミットチャージがPCメモリの容量1.5GBまで終始達していたのですが、処理速度が遅くなってからはVCのメインメモリ使用量255MBまでしか行かなくなりました。映像出力用のメモリかなんかが、割り当ててもらえなくなったりしてるのでしょうか。 ちなみに仮想メモリはキャンセルしています。

  • 花子2007体験版をインストール中に、「選択したデバッガでデバッグしますか?」と出てインストールできません・・・

    花子2007体験版をインストールしている最中に、 「acrodist.exe [5316] でハンドルされていない Win32 の例外が発生しました」 というメッセージが出ました。 また、 「新しいインスタンス Visual Studio2005」 というものだけが選択肢として出ています。 ・「現在選択されているデバッガを規定のデバッガに設定する」 ・「デバッグエンジンを手動で選択する」 というチェックボックス型のところが出ています。 そして、 「選択したデバッガでデバッグしますか?」 というメッセが出て止まっています。 「はい」なのか「いいえ」なのか、いったいどうすればいいのでしょうか?

  • VC++ の設定

    VC++ 6.0 を使っています。 ボーランドのコンパイラを長く使っていて VC++のコンパイル時の 設定がよく分からなくて、 URelease のなかで、MBCS , DEBUG などの 設定をしてしまいました。  とりあえず、 Debug 版の設定を MBCS , DEBUG などとして コンパイルできました。予定通り動いています。 Release 版では MBCS , NDEBUG の設定で コンパイルとリンクはできました。 しかし、ハングアップします。  リストコントロールの画面で 項目をクリックするとハングアップします。 デバッグ版ではハングアップしません。  設定、およびソースコードの書き方で ハングアップの原因となりやすい物は何でしょうか? アドバイスをお願いいたします。

  • リリース版にすると例外エラーが発生する

    同じような質問がないか検索したのですが、ないようなので質問させてもらいます。 Visual C++2010 Expressを使ってプログラムを書いている、アプリケーション作成初心者です。 デバッグが一区切りしたため、リリース版でビルドし実行したところ、コンストラクターの 内部で、下記のエラーが発生しました。 ”アプリケーションのコンポーネントで、ハンドルされていない例外が発生しました。” ”使用されたパラメータが有効ではありません” デバッグ版では、発生しません。 エラーが発生するコードは、以下の行です。 InitializeComponent(); Blank = gcnew Bitmap("Blank.png"); この、Bitmapをgcnewする行で、上記のエラーウィンドウが表示されます。 ビルドパラメータは、リンカ入力の追加の依存ファイルに"Wsock32.lib"が指定されています。 他は、変更していません。 メモリの問題でしょうか? よろしくお願い致します。

  • スタンバイ状態に移行するのを検知したい

    VC++2008、XP~Win7で動作するプログラムを作成しています。 常駐するプログラムで、スタンバイ状態に移行する場合に特定の処理をさせたいのですが、検知することは可能でしょうか? OnSessionChangeでいけるかと思ったのですが、スタンバイ状態に入った場合には通っていないようで (デバッガとまらない、デバッグ文も出ない)、似たような関数も検索不足かもしれませんが見つかりませんでした・・・。 よろしければご教授願います。

  • VC++でDeugモードOKで、Releaseモードのみでエラーが出る?

    マイクロソフトのVisualC++で テキストデータを処理するプログラミングしています。 (MFCは使っていません。) 使用してたプログラムの 一部の変数をクラス化しました。 数多くのエラーをかいくぐり、 Debugモードでは、 目的の演算を実行することができるようになりました。 ところが、 このプロジェクトをReleaseモードでビルド実行すると、 「trans1.exe の 0x0040d052 でハンドルされていない例外が発生しました : 0xC0000005: 場所 0x2eb11a94 に書き込み中にアクセス違反が発生しました。」 というエラーが出て止まってしまいます。 プロジェクトのプロパティ設定で、 ヒープ領域をDebugモードと 同じにしてみたりしたのですが、 状況は改善されません。 メモリの問題のような気がして、 配列の大きさ等をチェックしましたが、 問題なしでした。 プログラムを他の人が使えるように するためには、 Releaseモードが必要なので困っています。 どなたか、アドバイスかご教示お願いします。 デバッグ方法を教えて頂いても大変助かります。 よろしくお願いします。

  • メモリの開放を全て行いたいが開放し損ねている VC++6.0 使用

    こんにちは。 Win2000環境 VC++6を使用してあるアプリケーションを開発してまして そのアプリ終了時に、確保したメモリを開放しているのですが 「すべてのメモリを開放できませんでした」というような表示がされてしまいます。 (この表示文字自体は、そのアプリの仕様です。エラーチェックしてくれています) 自分ではmallocしたデータは全て開放しているつもりですが どのメモリ(変数)が開放し損ねているのかわからずに困っています。 VCのデバッグモードを使用して処理をたどってみても、場所が特定できません。 mallocしている部分をコメントアウト等して ちょっとづつでも場所を特定できればいいのですが、 諸事情により(プログラムの処理上)それができない形になっています。 皆さんは、メモリを開放させる処理で、どこかメモリを開放し損ねている場合 どのようにその場所を突き止めているのでしょうか? VC++のデバッグモードの何かしらの機能か何かで その場所を表示させるような事なのできないのでしょうか? ちょっとわかりにくい説明ですが、 ご存知の方、どうぞよろしくお願い致します。

  • C#からVC++DLLの呼び出しに失敗する

    VS.NET2005のC#からVC++6.0で作成したDLLを呼び出しています。 VCのデバッガでデバッグしてみると呼び出した関数は正常に動作しているようなのですが、最後のreturnを実行しC#に戻るところでエラーが出てしまいます。 C#側では「'System.ExecutionEngineException' のハンドルされていない例外が ConsoleApplication1.exe で発生しました。」となります。 C#での宣言は、 [DllImport("test.dll")] public static extern uint TestFunc(ref byte[] moji, ref uint nagasa); です。 VC++の宣言は、 __declspec(dllexport) unsigned long __stdcall TestFunc(unsigned char* moji, unsigned long* nagasa) です。 C#へ値を返さない関数は問題ないのですが、値を返そうとすると起きるようです。不備などあればご指摘いただけないでしょうか。 ちなみにVB6からは問題なく動作できました。

  • CGIプログラムのデバッグ

    VisualC++5.0で、CGIのモジュールを作成してます。 これからで出来上がったプログラムのテストを行おうとして気づいた点があるのですが... この処理の中では、送信されてきたパラメータを解析しようと、 環境変数の"CONTENT_LENGTH"や"QUERY_STRING"を取得する処理をやっているのですが、 実際にVC++5.0のデバッガを動かしてみると、上の環境変数が設定されてない(当たり前ですが...) ために、null値しかこなくデバッグできずにいます。 VC++5.0のデバッグ機能で上の環境変数を設定しておきたいのですが、 何か良い方法はご存知ないでしょうか?

  • Windows Up Date で

    SL39F.tmp - 共通言語ランタイム デバッグ サービス アプリケーションで、ハンドルできない例外が発生しました。 処理 ID=0xddc (3548)、スレッド ID=0x350 (848) アプリケーションを終了するには[OK]をクリックしてください。 アプリケーションをデバッグするには、[キャンセル]をクリックしてください。 というものが出て来ます。 OKするとUpDateが終了してしまいます。 キャンセルすると、以下の内容が表示されます。 SL39F.tmp - デバッガが見つかりませんでした。 登録された JIT デバッガを使用できません。以下のコマンドで JIT デバッガを起動しようとして、 エラーコード 0x2(2)が発生しました。 コンピュータの設定を確認してください。 cordbg.exe!a 0xddc デバッガを手動でアタッチする間処理を待機させるには、[再試行を]をクリックしてください。 JIT デバッグ要求を中止するには[キャンセル]をクリックしてください。 となります。 再試行をクリックすると、UpDateが待機状態になります。 どう操作・設定すればいいのかわかりません。 分かる方解決策をどうかお願いします。