上級 › Segmentation fault(配列の範囲外への書き込み) › パターン2
Segmentation fault(配列の範囲外への書き込み)
配列の宣言サイズを大きく超えた添字に書き込むと、プロセスに割り当てられていないメモリ領域に触れてクラッシュします。
1 #include <stdio.h> 2 3 int main(void) { 4 int data[10]; 5 data[_________] = 1; ^ 6 printf("%d\n", data[0]); 7 return 0; 8 }
Segmentation fault
空欄を埋めてコンパイル・実行を通す
少しだけ超えた添字は近くの別の変数を静かに破壊するだけでクラッシュしないこともありますが、大きく外れた添字ではOSがメモリ保護違反として検出しクラッシュさせます。
次の問題