这个问题在这里已有答案:
在下面的代码中,为整数分配内存,然后生成浅拷贝,最后在其上调用delete。它如何仍然打印23作为输出,为什么不在q上删除调用,导致运行时异常。
#include <iostream>
using namespace std;
int main() {
int* p = new int(23);
int* q = p;
delete p;
cout << *p << endl;
delete q;
return 0;
}
未定义的行为意味着任何事情都会发生。
它可能会崩溃。
它可能会撞坏你的车。
它可能会使你的大脑崩溃。
它可能会让射手座A *撞到你的大脑。
它可能会使你的大脑撞到你的车里,然后将它们撞到射手座A *。
它似乎可行。
但它仍未定义。
不要指望结果。