c++ - 当我写入超出数组末尾时,为什么不会出现段错误?

标签 c++ segmentation-fault

为什么我编译时没有给出错误?

#include <iostream>
using namespace std;

int main()
{
    int *a = new int[2];
    // int a[2]; // even this is not giving error
    a[0] = 0;
    a[1] = 1;
    a[2] = 2;
    a[3] = 3;
    a[100] = 4;
    int b;

    return 0;
}

有人可以解释为什么会发生这种情况吗? 提前致谢。)

最佳答案

因为未定义的行为==任何事情都可能发生。你很不幸它没有崩溃,这种行为可能隐藏错误。

关于c++ - 当我写入超出数组末尾时,为什么不会出现段错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48198145/

相关文章:

c++ - 如何验证进程?

c++ - 如何更改 QToolButton 的 IconSize

c++ - 在另一个类中使用对象的构造函数

关于c中的free(指针)的困惑

python-3.x - 使用 pip3 安装我的包时出现段错误

c++ - Base64 转换器输出不正确

c++ - 如何在屏幕上显示输出?

c++ - 不同 so 文件中的相同函数名称以及链接到二进制文件的两个 so 文件

c - 段错误调试帮助

c - strdup() 的用法