#include <stdio.h> void assign_value(int *array, int index, int value); int main() { printf("Hello, World!\n"); int array[10]; assign_value(array, 16, 131); printf("%d\n", array[16]); return 0; } void assign_value(int *array, int index, int value) { array[index] = value; printf("done\n"); } 编译:$ gcc -g -Wall -std=c18 -o hello_world hello_world.c 运行输出:
Hello, World! done 131 [1] 3719 segmentation fault (core dumped) ./hello_world 但是如果把 index 从 16 改成 12, 则不会出现最后的 segmentation fault. 如果 C 不处理越界的话,为什么 16 会报错,如果处理越界为什么 12 不报错?

