Pinter 新运算符 C++

Pinter new operator C++

我在 C++ 中测试新运算符如下:

#include <iostream>
using namespace std;


int main()
{

int *Q = new int[5];

Q[0] = 0;
Q[1] = 1;
Q[2] = 2;
Q[3] = 3;
Q[4] = 4;


for (int i = 0; i < 7; i++)
    {
        cout << "Q[" << i << "] = " << Q[i] << endl;
    }
return 0;
}

如果您注意到,在 for 循环中我超出了指针的限制并且我期待堆栈溢出类型的错误;但它只是打印了这两个额外位置的内容。

有人对此有解释吗?

是的,发生的事情是您的程序 "walking off" 数组的末尾,正在打印出垃圾。 "Garbage" 在此上下文中可以是计算机中的任何内容(内存等)。它没有像 Java 或 Python 那样的保护措施。