#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 不报错?
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.