エラー改善法を教えてください

このQ&Aのポイント
  • WindowsXPで他人のプログラムを実行している際に、特定の動作を実行するとエラーが発生します。
  • エラーの原因は、VC7で作成したプログラムをVC9で起動したことによる互換性の問題です。
  • 解決策としては、エラーが発生する特定の動作を見直し、プログラムを再ビルドすることが挙げられます。
回答を見る
  • ベストアンサー

エラー改善法を教えてください

windowsXPで他人のプログラムを実行しています。 VC7で作成したプログラムをVC9で起動したところ、 ビルド→デバック→実行までは通ったのですが、 アプリケーションの途中で特定の動作を実行すると、 以下のようなエラーが出ます。 Debug Assertion Failed! Program:~\myProg.exe File:C:\Program Files\Microsoft Visual Studio 9.0\VC\include\vector Line:780 Expression:("Standard C++ Libraries Out of Range",0) For information on how your program can cause an assertion failure, see tha Visual C++ documentation on asserts. (Press Retry to debug the application) その後、myProg.exeによってブレークポイントが発生しました となります。 エラーがC:\Program Files\Microsoft Visual Studio 9.0\VC\include\vectorの中では、手のつけようがありません。 どなたかアドバイスお願いします。

  • rumya
  • お礼率50% (6/12)

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

  • ベストアンサー
  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

その「他人のプログラム」にエラーがあるんだけど, それがたまたまそこで発覚しているだけ. ヘッダ vector の中にエラーがあるわけじゃない. このヘッダを読めばわかるように std::vector に対して operator[] で添え字付けしているところの「どこか」がおかしいので, operator[] を全て at の呼び出しに置き換えて例外を吐かせてください.

rumya
質問者

補足

>operator[] を全て at の呼び出しに置き換えて例外を吐かせてください すいません。ここの意味がわかりません。どういうことですか? 知識が乏しくてすいません。

その他の回答 (1)

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.2

や, std::vector::operator[] を呼び出しているところを std::vector::at の呼び出しに変える. つまり 「あれ[これ]」となっているところを「あれ.at(これ)」に変えるってこと.

rumya
質問者

お礼

お礼がずいぶんと遅くなってしまいました。申し訳ありません。 ご回答ありがとうございます。 operatorが使われているところはoperator+やoperator*のような形か、operator[]で[]内は空、という形だけでした。 プログラム自体を把握していない状況で質問しても改善は難しいですね。改めて勉強不足を思い知らされました。

関連するQ&A

  • クリティカルエラー Expression: ("Buffer too small", 0)

    VC++2005でコンパイルしたアプリですが、実行すると クリティカルエラーの次のメッセージが表示されました。 VCの設定で解決できるものなのでしょうか? Microsoft Visual C++ Debug Library ... Expression: ("Buffer too small", 0) Foi infomation how your program can cause an assertion failure, see the Visual C++ documentation on asserts. (press Retry debug the application)

  • 粒子法プログラムのビルドエラー(cstdlibのエラー)

    粒子法のMPS法のプログラミングをしているのですが、C++でmps.cをビルドをすると、cstdlibのエラーが出てビルドが出来ません。 mps.cの本文中にはエラーは無く、visual studio 9.0にあるcstdlibの構文エラーが出てしまいます。 最初から入っているライブラリファイルが間違っているとは思えません。 解決法を教えてください。お願いします。 ↓ mps.c内でcstdlibを使っている場所 ↓ #include <cstdlib> /* This line is necessary for C++ compiler. Remove this line in C compiler */ #include <stdio.h> #include <sys/types.h> #include <math.h> #include <string.h> ↓ エラーメッセージ ↓ 1>コンパイルしています... 1>mps.c 1>c:\program files\microsoft visual studio 9.0\vc\include\cstdlib(21) : error C2143: 構文エラー : '{' が ':' の前にありません。 1>c:\program files\microsoft visual studio 9.0\vc\include\cstdlib(21) : error C2059: 構文エラー : ':' 1>c:\program files\microsoft visual studio 9.0\vc\include\cstdlib(21) : error C2143: 構文エラー : '{' が ':' の前にありません。 1>c:\program files\microsoft visual studio 9.0\vc\include\cstdlib(21) : error C2059: 構文エラー : ':' 1>c:\program files\microsoft visual studio 9.0\vc\include\cstdlib(21) : error C2143: 構文エラー : '{' が ':' の前にありません。 1>c:\program files\microsoft visual studio 9.0\vc\include\cstdlib(21) : error C2059: 構文エラー : ':' 省略(21行目のエラーが23~32行目まで同じエラーが続く) 1>MPS3000 - エラー 62、警告 0 ========== すべてリビルド: 0 正常終了、1 失敗、0 スキップ ==========

  • windows10でVC6.0++のclを使いたい

    cl.exeの場所:C:\Program Files\Microsoft Visual Studio\VC98\Bin 環境変数INCLUDE設定:C:\Program Files\Microsoft Visual Studio\VC98\Include 環境変数LIB設定:C:\Program Files\Microsoft Visual Studio\VC98\Lib を登録したのですが、mspdb60.dllがないといわれました。 検索したらあるのですが、 どうすれば、Windows10でvc6.0++のCコンパイラを使えますか? 教えてくださいよろしくお願いします。

  • OpenCVを使いたいのですが

    Visual C++ 2010にOpenCV2.4.3の導入し、設定を終えたのでプログラムをビルドさせるとエラーが吐き出され動作しません。 どなたか原因がわかる方はいらっしゃらないでしょうか? 【プログラム】 #include<stdio.h> #include<openCV2/opencv.hpp> #ifdef _DEBUG #pragma comment(lib,"opencv_core243d.lib") #pragma comment(lib,"opencv_highgui243d.lib") #pragma comment(lib,"opencv_objdetect243d.lib") #else #pragma comment(lib,"opencv_core243d.lib") #pragma comment(lib,"opencv_highgui243d.lib") #pragma comment(lib,"opencv_objdetect243d.lib") #endif //-------------------------------------------------------- //main int main(int argc,char* argv[]) { const char* szWndName="画像"; if(argc<2) { fprintf(stderr,"入力ファイル名を指定してください。\n"); return -1; } IplImage *img=cvLoadImage(argv[1],CV_LOAD_IMAGE_COLOR); if(img==NULL) return -1; cvNamedWindow(szWndName); cvShowImage(szWndName, img); cvWaitKey(0); cvDestroyAllWindows(); cvReleaseImage(&img); return 0; } 【ビルド後にでるエラーメッセージ】 ------ すべてのリビルド開始: プロジェクト: OpenCV, 構成: Debug Win32 ------ TEST02.c C:\Program Files\Microsoft Visual Studio 10.0\VC\include\cstdlib(19): error C2054: 'using' の後に '(' が必要です。 C:\Program Files\Microsoft Visual Studio 10.0\VC\include\cstdlib(19): error C2061: 構文エラー : 識別子 'using' C:\Program Files\Microsoft Visual Studio 10.0\VC\include\cstdlib(19): error C2054: 'using' の後に '(' が必要です。 C:\Program Files\Microsoft Visual Studio 10.0\VC\include\cstdlib(21): error C2061: 構文エラー : 識別子 'using' C:\Program Files\Microsoft Visual Studio 10.0\VC\include\cstdlib(21): error C2061: 構文エラー : 識別子 'abs' C:\Program Files\Microsoft Visual Studio 10.0\VC\include\cstdlib(21): error C2059: 構文エラー : ';' C:\Program Files\Microsoft Visual Studio 10.0\VC\include\cstdlib(21): error C2061: 構文エラー : 識別子 'atexit' C:\Program Files\Microsoft Visual Studio 10.0\VC\include\cstdlib(21): error C2059: 構文エラー : ';' C:\Program Files\Microsoft Visual Studio 10.0\VC\include\cstdlib(22): error C2061: 構文エラー : 識別子 'atof' C:\Program Files\Microsoft Visual Studio 10.0\VC\include\cstdlib(22): error C2059: 構文エラー : ';' C:\Program Files\Microsoft Visual Studio 10.0\VC\include\cstdlib(22): error C2061: 構文エラー : 識別子 'atoi' C:\Program Files\Microsoft Visual Studio 10.0\VC\include\cstdlib(22): error C2059: 構文エラー : ';' C:\Program Files\Microsoft Visual Studio 10.0\VC\include\cstdlib(22): error C2061: 構文エラー : 識別子 'atol' C:\Program Files\Microsoft Visual Studio 10.0\VC\include\cstdlib(22): error C2059: 構文エラー : ';' C:\Program Files\Microsoft Visual Studio 10.0\VC\include\cstdlib(23): error C2061: 構文エラー : 識別子 'bsearch' C:\Program Files\Microsoft Visual Studio 10.0\VC\include\cstdlib(23): error C2059: 構文エラー : ';' C:\Program Files\Microsoft Visual Studio 10.0\VC\include\cstdlib(23): error C2061: 構文エラー : 識別子 'calloc' C:\Program Files\Microsoft Visual Studio 10.0\VC\include\cstdlib(23): error C2059: 構文エラー : ';' C:\Program Files\Microsoft Visual Studio 10.0\VC\include\cstdlib(23): error C2061: 構文エラー : 識別子 'div' C:\Program Files\Microsoft Visual Studio 10.0\VC\include\cstdlib(23): error C2059: 構文エラー : ';' C:\Program Files\Microsoft Visual Studio 10.0\VC\include\cstdlib(24): error C2061: 構文エラー : 識別子 'exit' C:\Program Files\Microsoft Visual Studio 10.0\VC\include\cstdlib(24): error C2059: 構文エラー : ';' C:\Program Files\Microsoft Visual Studio 10.0\VC\include\cstdlib(24): error C2061: 構文エラー : 識別子 'free' C:\Program Files\Microsoft Visual Studio 10.0\VC\include\cstdlib(24): error C2059: 構文エラー : ';' C:\Program Files\Microsoft Visual Studio 10.0\VC\include\cstdlib(24): error C2061: 構文エラー : 識別子 'getenv' C:\Program Files\Microsoft Visual Studio 10.0\VC\include\cstdlib(24): error C2059: 構文エラー : ';' C:\Program Files\Microsoft Visual Studio 10.0\VC\include\cstdlib(25): error C2061: 構文エラー : 識別子 'labs' この後はエラー表記が続きます。

  • vc++ 関連

    ぼくは今vc++2008 を使っています. デバッグなしで実行だとでエラーになるのに デバッグだとエラーにならない というわけのわからないバグで混乱しています. デバッグモードだとエラーが出ないので バグが見つけられなくて困ってます. そういう事ってあるんですか? ちなみにエラーメッセージは Debug Assertion Failed! Program: ...ments\Visual Studio File: c:\program files\microsoft visual studio 9.0\vc\include\list Line: 218 Expression: list iterator not dereferencable です.

  • ソフトが使えない

    あるソフトを立ちあげようとすると Microsoft Visual C++ Debug Library Debug Assertion Failed!(プログラム名) For information on how your program can cause an assertion failure, see the Visual C++ documentation on asserts. (Press Retry to debug the application) と言うメッセージがでてソフトが使えません。 これは、何のことでしょうか。 使えるようになるのですか。

  • エラーメッセージ対応を教えて下さい。

    コンピーターはあまり得意でない私です。 下記事項について、ご教授の程、宜しくお願い申し上げます。          記 原因は不明ですが、立上げ時に、次のエラーメッセージが最近表示されるようになりました。 そしてインターネットにつながらなくなってしまいました。 OSはWin7です。 Microsoft Visual C++Debug Library Debug Assertion Failed! programu:c:\programu Files\Lenovo\Energv Management\Energy Management.exe File:.\controlhandlre.cpp Line:119 for innformation on how your program can cau:se an assertion failure,see the visual c++documentation on asserts. どなたか、対応策をご教授いただきたければ幸いです。 宜しくお願い致します。

  • iostream インクルード時に発生するエラー

    C++ の勉強をするためにVisualStudio2008にて下記コードをビルドしたのですが、エラーが発生してビルドが失敗しました。 ■ コード #include <iostream> using namespace std; int main() { std::cout << "Hello World !"; return 0; } ■ 操作 空のコンソールアプリケーションを作成し、ソースファイルに追加>新しい項目 にて "temp.cpp" を追加、コードを入力。その後 ビルド > ソリューションのビルド を実行。 ■ エラー(一部) >> 「説明」 列 warning C4985: 'strlen': 前の宣言に属性が存在しません。 error C2039: 'wmemcpy_s' : '`global namespace'' のメンバではありません。 error C3861: 'wmemcpy_s': 識別子が見つかりませんでした error C2039: 'wmemmove_s' : '`global namespace'' のメンバではありません。 error C3861: 'wmemmove_s': 識別子が見つかりませんでした error C2039: 'memcpy_s' : '`global namespace'' のメンバではありません。 error C3861: 'memcpy_s': 識別子が見つかりませんでした error C2039: 'memmove_s' : '`global namespace'' のメンバではありません。 >>対応する「ファイル」列 d:\program files\microsoft visual studio 9.0\vc\include\exception d:\program files\microsoft visual studio 9.0\vc\include\iosfwd d:\program files\microsoft visual studio 9.0\vc\include\iosfwd d:\program files\microsoft visual studio 9.0\vc\include\iosfwd d:\program files\microsoft visual studio 9.0\vc\include\iosfwd d:\program files\microsoft visual studio 9.0\vc\include\iosfwd d:\program files\microsoft visual studio 9.0\vc\include\iosfwd d:\program files\microsoft visual studio 9.0\vc\include\iosfwd プロジェクトのプロパティやインストール時の構成などで何か問題があるのでしょうか。VisualStudio以外にはWindows SDK 、Windows SDK 6.0A、SQL Server2005などが導入されています。 再インストールするのもありかと思ったのですが、原因が分からないとまた同じ現象が発生しそうなため踏み切れません。 よろしくお願いします。

  • CImageクラスの使用について

    CImageクラスを使って画像処理を行いたいです。 具体的には、 1.Load()で画像を読み込み 2.処理(画像の回転、反転とか) 3.Save()を使って画像を保存 コンパイルはできるのですが、 Debug Assertion Failed! File: c:\Program Files\Microsoft Visual Studio 8\VC\atlmfc\include\atlimage.h Line: 978 Expression: m_hBitmap != 0 が出て途中で止まります。 どうやれば途中で止まらず実行できるようになるのでしょうか? 助言のほどお願いします。 環境はWindows XP、visual studio 2005です。

  • ドキュメントと開くとエラーになります

    マイドキュメントと開くとエラーになります 具体的には、 Microsoft Visual C++ Runtime Library Assertion failed! Program:C:Windows\Explorer.EXE For information on how your program can cause an assertion failures , see the Visual C++ documentation on asserts (Press Retray to debug the application. JIT must be enabled) と表示されます。(中止)(再試行)(無視)のボタンが下にあるんですが、どれをクリックしても「エクスプローラを再起動します」となってフォルダが閉じるだけです。具体的にどのような操作をすれば修復できるか教えてください。

専門家に質問してみよう