- 締切済み
C++の例外
VS2005でtest.exe から test.dll(VC++)を呼んで、プログラムを作っています。 しかし、デバッグの時に、以下の例外が発生しました。 test.exe の 0x7c812a5b で初回の例外が発生しました: Microsoft C++ の例外: int (メモリの場所 0x00115820)。 以上の例外は、どういう意味でしょうか? メモリのアクセスのエラーでしょうか? test.dllプログラムの構造としては、以下のようになります。 char readrecordTemp[READ_SIZE + 1]; memset(readrecordTemp,0x00,sizeof(readrecordTemp)); char returncode1 = 0; char returncode2 = 0; try{ for(;;){ if (NULL == fgets(readrecordTemp,VT_MAX_READ_SIZE, m_fp)){ if (ferror(m_fp)){ throw ERROR_IO; } if (feof(m_fp)){ throw EOF; } } returncode1 =readrecordTemp[strlen(readrecordTemp) -2 ]; returncode2 =readrecordTemp[strlen(readrecordTemp) -1 ]; 。。。。 。。。。 } ファイルの最後になったら、自分が定義した例外で returncode1 =readrecordTemp[strlen(readrecordTemp) -2 ]; returncode2 =readrecordTemp[strlen(readrecordTemp) -1 ]; などを飛ばしたいですが、デバッグの時に、 returncode1 =readrecordTemp[strlen(readrecordTemp) -2 ];のところで 以上の例外が出されました。どうすればいいですか?
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- επιστημη(@episteme)
- ベストアンサー率46% (546/1184)
readrecordTempが長すぎ/短かすぎると配列の範囲を外れてしまうわけですが、実際どうでしたか?
補足
readrecordTempが長すぎるか短かすぎるかとは、どういう意味でしょうか?配列の範囲を外れるとはどういうことでしょうか? その配列は、動的に長さを確保していると考えていますが、 外れる可能性があるでしょうか?