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 那样的保护措施。
我在 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 那样的保护措施。