在下面的代码中,为一个整数分配了内存,随后进行了浅表复制,最后对其进行了删除。它仍然如何将23打印为输出,为什么不对q进行delete调用,导致运行时异常。
#include <iostream>
using namespace std;
int main() {
int* p = new int(23);
int* q = p;
delete p;
cout << *p << endl;
delete q;
return 0;
}
答案 0 :(得分:1)
未定义的行为表示有可能发生任何事情。
它可能会崩溃。
它可能会使您的车撞毁。
它可能会使您的大脑崩溃。
它可能会使人马座A *撞到您的大脑中。
它可能使您的大脑撞到您的汽车中,然后将它们撞到人马座A *。
它似乎可以正常工作。
但是它仍然没有定义。
不要期望结果。