分段错误不应该发生在应该

时间:2016-02-16 12:17:54

标签: c arrays segmentation-fault

我已经刷过我的C编码,并且重复了几年前做过的一些旧练习。我遇到了一种情况,我几乎100%确定它应该给出一个分段错误,但是程序运行顺利并且正确终止。为什么会这样?

#include <stdio.h>

int main(void){
    int vals[6] = {0,0,0,0,0,0};

    vals[8]++; //This should not be ok!!?

    printf("Done");
    return 0;
}

1 个答案:

答案 0 :(得分:4)

vals[8]的行为未定义

它等同于*(vals + 8) 解除引用数组范围之外的内存。

A&#34;分段错误&#34;是可能发生的许多事情之一。编译器也可以吃你的猫。