エラー内容 – プログラミング – Home

通知
すべてクリア

[解決済] エラー内容


makoto
 makoto
(@makoto)
ゲスト
結合: 23年前
投稿: 50
Topic starter  

おはようございます。

文字列の連結をしようとすると
「ハンドルされていない例外は a.exe にあります:0xC0000005:Access Violation」
というエラーがデバック中に出ます。

普通に実行すると強制終了になります。
このエラーはどういう意味なのでしょうか?


引用未解決
トピックタグ
sara
 sara
(@sara)
ゲスト
結合: 23年前
投稿: 99
 

例えば、こんなソースを書くと同様のエラーが出るはずです。
-------------------------------
char s[4];
strcpy(s,123);
strcat(s,456);
-------------------------------
配列のサイズは4と宣言しているのに、それ以上の書き込みをしているためです。
こんなことはしていませんか?


返信引用
makoto
 makoto
(@makoto)
ゲスト
結合: 23年前
投稿: 50
Topic starter  

struct Alpha_Table{
char han[3]; /* 半角 */
char zen[3]; /* 全角 */
}AlphaTable[]={
A,A,B,B,C,C,D,D,E,E,
F,F,G,G,H,H,I,I,J,J,...

char szNew[100];

strcat( szNew, (char *)AlphaTable[j].han[0]);

このような感じになっているのですが、
これもsaraさんの言うように、サイズがあっていないのでしょうか?

szNewには何も入っていません。
memset( szNew, 0x00, sizeof(szNew) );
で初期化しています。


返信引用
sara
 sara
(@sara)
ゲスト
結合: 23年前
投稿: 99
 

> strcat( szNew, (char *)AlphaTable[j].han[0]);

これはまずいです。正しくは、
strcat( szNew, AlphaTable[j].han);
又は
strcat( szNew, &AlphaTable[j].han[0]);

でしょう。
なぜ、エラーになったかというと、2番目の引数で AlphaTable[j].han[0]の値(j=0な
ら'A')をアドレスとしてアクセスしようとしたからです。


返信引用
makoto
 makoto
(@makoto)
ゲスト
結合: 23年前
投稿: 50
Topic starter  

saraさんの意見の通りになおしたら
無事にエラーがなくなりました。

ありがとうございました。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました