e252.c

配列の添字が大きすぎる!


int main() { int val = 0xAA ; int buf[10] ; buf[10] = 0xBB ; return(0) ; }
解説 valに0xAAを設定した後、書き変えていないのに、 いつのまにか値が0xBBになっています。 原因は、buf[0] ~ buf[9]が使用可能ですが、 buf[10]を使用したことで、エリア破壊が発生します。 詳細な説明は、プログラミング言語C 第2版 ANSI規格準拠 カーニハン リッチー著/石田晴久訳』 「5.3 ポインタと配列」Page119 を参照して下さい。