Run-Time Check Failure #2 - Stack around the variable 'xxx' was corrupted.

[戻る]
RES [E-Mail] 2008/07/15(火) 12:20:29
"Run-Time Check Failure #2 - Stack around the variable 'xxx' was corrupted."

上記メッセージが動作するPCによって発生したり、しなかったりするのですが
この原因ってどういう時に発生するのでしょうか?

ちなみにスペックはエラーが発生しないPC、発生するPC両方動作するには十分な
スペックです。

かもねぎ 2008/07/15(火) 12:33:54
必要なDLLがあったり、無かったり(壊れていたり)・・・
でしょうか

bun 2008/07/15(火) 12:56:27
> この原因ってどういう時に発生するのでしょうか?
以下のような場合であり、
普通はデバッグビルドされた場合だけです。
  char str[5];
  str[7] = '7';             // これや
  strcpy(str, "1234567");   // これなど

RES [E-Mail] 2008/07/15(火) 13:47:56
かもねぎさん
bunさん

書き込みありがとうございます。
参考にさせていただきもう少し調べてみます。

keichan 2008/07/15(火) 18:06:12
プロジェクトをリビルドすると問題解決する場合もあるみたいです。

maru 2008/07/15(火) 22:33:35
> プロジェクトをリビルドすると問題解決する場合もあるみたいです。
それはメモリの配置が変わるために、現象が出なくなっただけで、バグがあることには
変わりはありません。

ITO 2008/07/16(水) 11:15:18
使う変数バイト数はどのぐらいですか。
1MByteを越える場合は、ヒ−プメモリーを使いましょう。
new,もしくは、GlobalAlloc等の関数を参照
1MByteギリギリの場合も同様です。

keichan 2008/07/16(水) 11:18:37
あれ。そうだったんですか。

http://isobe.exblog.jp/1940660/
上記サイトを以前見かけて「ふーん」と思っていました^^;

ITO 2008/07/16(水) 14:14:02
> 上記サイトを以前見かけて「ふーん」と思っていました^^;
VC6.0は、よくリビルドしましたが、2003になってからは、
何度もデバッグを繰り返したとき以外はないですね。
VC2005はもっとよくなっていると思いますが......
#実際はどうですか?.............使用者の方
#僕も時間のあるときは使ってみますが(インストールはしてある(^^;)
確かに、リビルドしてみるのもいいかも知れませんね。

ん? 2008/07/17(木) 10:18:25
>"Run-Time Check Failure #2 - Stack around the variable 'xxx' was corrupted."
昨日、同じエラーが発生してましたw

うちのは解決しました。
このメッセージにある通り「xxx」の領域を超えた領域に書き込みを行おうとしてました。
# bunさんが指摘されている「strcpy(str, "1234567");   // これなど」でしたね。
確保された領域以上に大きな物を代入しているのでは?

RES 2008/07/17(木) 15:49:50
[[解決]]
返信をしていただき有難うございました。

解決をしました。

今回の現象としては、両PCのOSがWIN XP(英語版)にて発生した件で
質問投稿をしておりました。

原因としては、日本語IMEが設定されているPC、設定されていないPCの
ちがいで設定されていないPCにて上記エラーメッセージが発生しておりました。

起動していたソフト内で日本語テキストをコード変換し、DBへ更新を行う処理
が入っており、その部分でエラーが発生していました。

設定されていないPCに日本語IMEを設定することによりエラーが出なくなり
ました。

かもねぎさんの返信が参考になり見つけることができました。
ありがとうございました。

また、他の件で質問させていただく事があると思いますのでその時はみなさん
よろしくお願いします。

古いスレッドには追加発言できません。