• ベストアンサー

VS内で問題ないexeファイルが、単独実行できない

VC++2010expressで作成したC++のプログラムがあります。VS内から起動した場合には、デバッグモードでもリリースモードでも問題なく作動するのですが、VS外から、アイコンをクリックして起動すると、malloc()したメモリーをfree()したときに作動停止してしまうことがあります。確率は低いですが、正常に作動する場合もあり、また、free()をコメントアウトすると作動停止しなくなります。メモリーの扱いに問題があるのかと思い、malloc()の直後にfree()してみましたが、同様な症状が見られました。どのような原因が考えられるでしょうか。

質問者が選んだベストアンサー

  • ベストアンサー
  • Wr5
  • ベストアンサー率53% (2177/4070)
回答No.2

malloc()で取得したした領域を越えてアクセスする。 という動作をする箇所があるのでしょう。 ファイルアクセスとかしていたりはしないですか? 「カレントディレクトリのファイル」をオープンして読み込み。 とかの処理に「オープン出来なかった時」のエラー処理が抜けていたりはしないですか? VS上からの実行と、エクスプローラなどからexeファイルをダブルクリックなどで起動した場合とではカレントディレクトリが異なったりしますけど……。 OutputDebugString()でデバッグ出力するようにして、外部のモニタツールで確認してみてはどうでしょう? # もっとも、その変更により問題が出なくなる。なんてコトもあるかも知れませんが……。

goo-learner
質問者

お礼

ありがとうございます。 おっしゃるとおり、まったく別の場所で、長さlengthの文字列に対してlength+1バイトをalloc()すべきところ、lengthバイトしかalloc()していないところを発見し、それを修正したところ、この問題も起こらなくなりました。初歩的なミスでした。コンパイル時にもエラーにならないし、実行時エラーも散発的に発生、MessageBox等のブレークポイントを入れるとうまく動いてしまったりで、発見に苦労しました。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

  • wormhole
  • ベストアンサー率28% (1619/5653)
回答No.1

書かれてる内容からいえることは malloc(),free()の使い方を間違えてそう。 くらいしかないですけど。 せめてどのようなコードを書いてるか書きませんか。

goo-learner
質問者

お礼

ありがとうございます。 そうですね。わかりにくい質問で申し訳ありませんでした。 なお、問題はすでに解決しました。 お騒がせいたしました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • VS2008 C++ リリースモードでエラー

    表題の環境でMFCベースのプログラムを開発しています。 リリースモードで実行を試したところ、同じようなタイミングで強制終了が発生します。 (おそらく、自前のDLL内で落ちている?) デバッグモードのEXEを直接起動しても、強制終了が発生します。 りかし、VSからリリースモード(当然、デバッグモードも)の実行を行うと、エラーが発生しません。 VSから実行する場合、参照するDLLはVSを使用しない場合とは違うDLLを参照するのでしょうか。 その他、このような状況での対処方法について、アドバイスをいただけませんでしょうか。

  • VSのデバッグ実行とデバッグなし実行について

    あいまいな質問になってしまい申しわけありませんが、何か手がかりになるような事でも知っている方がいらっしゃればと思い投稿しました。 VisualStudio2008 ProfessionalEditionで、C#による開発を行っています。 リリースビルドを行い、デバッグ実行(VS上でF5キー押下)すると正常に動作するのですが、デバッグなし実行(Ctrl+F5)や生成されたexeの起動を行うと途中でフリーズしてしまいます。 何か良い方法があればよろしくお願いします。

  • 実行ファイル(.exe)が別のPCで実行できない

    お世話になります。 VC++で、MFCアプリケーションプロジェクトより ダイアログベースでアプリを作成したのですが、 その実行ファイル.exeを別のWindowsPCで 実行すると、 ”「MFC71.DLL」が見つからなかったため、このアプリケーションは開始できませんでした。アプリケーションをインストールしなおすことの問題は解決される場合があります。” というエラーメッセージが出て実行できません。 どのようにすれば、実行できるのでしょうか? また、Releaseモードでビルドした場合、 Debugモードでビルドしたときには、出なかった 「error LINK2019:未解決の外部シンボル・・・。」という エラーがでます。 どうぞよろしくお願い致します。

  • VS2005環境でのSHBrowseForFolderの使用について

    SHBrowseForFolderについて質問です。 フォルダを選択するダイアログボックスを表示させようとしています。 それで http://rararahp.cool.ne.jp/vc/class/browseFolderDialog.htm http://www.geocities.co.jp/SiliconValley-PaloAlto/5610/vc/03030422/index.html などのサンプルを用いて表示部分の作成を行いました。 デバッグモードで実行し、 ダイアログボックスを表示させたり、フォルダ名を取得したりといった動作は行えるのですが、 右上の×ボタンを押して終了しようとすると終了処理の途中で固まってしまい正常に終了できません。 いずれのサンプルの場合もSHBrowseForFolderをコメントアウトして実行してみると正常にデバッグモードを終了することができます。 ちなみにVS6.0で作成している別のソフトでもSHBrowseForFolderを使用していますが,こちらは問題ありません。 環境のせいだと思うのですが原因が分かりません。 ご回答をお願いいたします。

  • exeファイルで実行できない

    VB6.0のexeファイルでのアプリ稼動ができません。プロジェクトファイルを開いて実行すれば稼動するのですが、生成したexeファイルを実行した場合は稼動しません。 いったいどういう原因なのでしょうか?リリースモードでコンパイル云々という話でしょうか? ただ他にもVBのアプリが存在するのですが、そちらはexeファイルの実行だけで問題なく稼動します。 OS Windows XP(SP1) 開発環境 VB6.0 (SP5) .NET Framework 1.0? 原因が分かる方、推測できる方いらっしゃったら、教えていただけないでしょうか?宜しくお願いします。

  • VS2008でVBとC++を一つのプロジェクトにすることができますか?

    VB6.0からの移行組です。現在VB6.0をメインにしてVC++6.0で作ったdllをVBで呼んでいます。VBでデバッグ中にC++で作ったdll内にバグがあった場合にどこにバグがあるかわからず不便です。 VS2008ではVBとVC++を一つのプロジェクトにまとめる事ができますか? そうすればデバッグ中にVBとVC++のコードを一連の流れで動かしてやれば、どこがおかしいのか分かりやすくて便利なんですが。 (C++がコンパイル型だから無理かな・・・) 素人な質問ですみませんがよろしくお願いします。

  • VC++2005で、リリースモードとデバッグモードの2通りをコマンドラインで行いたい。

    VC++2005で、リリースモードとデバッグモードの2通りでコンパイルしたいのですが、GUIでなく、コマンドラインでコンパイルしたいです。 オプションで、リリースモードの時のオプションとデバッグモードの時のオプションが知りたいです。 あと作成した、DLLやEXEからこれはデバックモード、リリースモードとわかる方法が知りたいです。 32/64bitの判定は、 dumpbinコマンドで分かりました。

  • 印刷中に強制終了

    VS2008 C++、Win7Pro 上記環境でソフトを開発しています。 あるプログラム(リリースモード)で印刷中に強制終了し、そのままデバッグ(VS Just-In-Timeデバッガ)すると SetViewportOrg内でthisポインタがNULLの状態で停止します。 発生頻度は100%ではなく、5%から30%程度といったところです。 停止するところは必ず上記SetViewportOrg内で、thisポインタがNULLとなっています。 デバッグモードではこの症状は発生しません。 プリンタは3機種試しましたが、いずれでも発生状況は変わりません。 何かアドバイスをいただけたら助かります。

  • VS2015 が突然制御不能になります

    VS2015 communityがDebug中に突然停止し、マウスのカーソルは時計マークに変わり、 PCが制御不能になります。 そして、下記のダイヤログの表示があります。 =============================== Microsoft Visual Studio 2015は動作を停止しました。 ー>オンラインで解決策を確認してプログラムを再起動します。 ->プログラムを再起動します。 ー>プログラムをデバッグします =============================== 動作環境は、Windows7の32ビットであり、VS2008、VS2013はこの様な不具合はありませんでした。 VS2015のIDEは日本語と英語環境がありますが、何れの環境でもこの様な不具合が発生します。 実際にキーボードから、コードを入力して、AppをDebug(Run)している時には、この不具合は起きず、 AppをRunしていない時に起きました。 Q1)この件に関しまして、コメントを頂けますと大変助かります。 以上、宜しくお願いします。

  • リリースビルドの作成

    VisualC++ 2005 Express Editionを使って、C言語の簡単なプログラムを作りました。コンパイルの際に出てくるエラーや警告は一切ない(デバッグモード、リリースモード両方)のですが、このリリースビルドをVC++をインストールしていないPCで実行しようとすると、「指定されたプログラムは実行できません。」と出て実行できません。コンパイルに使ったPCでは実行できます。 リリースビルドを作成の際、ツールバーにある"Debug"を"Release"に切り替えて、ソリューションをビルドしました。プロジェクトはWin32コンソールにして、空のプロジェクトから始めました。 なぜ、バイナリが実行できないのでしょうか? そもそも、リリースビルドの作成法はこれでいいのでしょうか?

このQ&Aのポイント
  • arrowsTabの電源ランプは点くが起動しない
  • 電源ランプは点くが起動はしません。
  • 電気アダプターを入れて充電しても変わりありません。
回答を見る

専門家に質問してみよう