#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 不报错?
|