int n = sprintf(struG.aa, .... );
assert( n < 5 );
でnをprintf(assert.hを使用したくなかったので)でみたところ5でしたけど・・・
全く同じ処理を直前でやっているのですが、その部分では、壊れないようなのです。
奇跡的に戻っていただけでしょうか?
typedef struct stru
{
・
char test[5];
char aa[5];//あとで追加したメンバ
}stru;
sub2()
{
unsigned long rr;
unsigned long ss;
stru struG;
sprintf(struG.test, %05u, rr); //呼び出し元に戻ることができました。
sprintf(struG.aa, %05u, ss); //この処理を追加するともどれません。
return 0;
}
たまたま動いてただけです。
> でnをprintf(assert.hを使用したくなかったので)でみたところ5でしたけど・・・
5だと assert(n < 5); にばっちりひっかかりませんか?
printf文入れて確認するくらいならassert使うのと大差ないような気も…
(いらなくなったなら消せばいいし)
たまたま動いてただけです。
> でnをprintf(assert.hを使用したくなかったので)でみたところ5でしたけど・・・
5だと assert(n < 5); にばっちりひっかかりませんか?
printf文入れて確認するくらいならassert使うのと大差ないような気も…
(いらなくなったなら消せばいいし)
あ、引っかかりますね。
皆様、ご教授いただきありがとうございました。解決です
あわせてこれからコードを載せる際には気をつけたいと思います。。
> sprintf(struG.test, %05u, rr); //呼び出し元に戻ることができました。
そりゃそうでしょう。
そのうしろに char aa[5]; があるので、そっちを書きつぶしたに違いありません。
が、確保された領域を超えてはいませんから。