在浅表副本上调用删除不会炸毁

时间:2018-09-12 09:42:57

标签: c++ memory-management delete-operator

在下面的代码中,为一个整数分配了内存,随后进行了浅表复制,最后对其进行了删除。它仍然如何将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;
}

1 个答案:

答案 0 :(得分:1)

未定义的行为表示有可能发生任何事情。

它可能会崩溃。

它可能会使您的车撞毁。

它可能会使您的大脑崩溃。

它可能会使人马座A *撞到您的大脑中。

它可能使您的大脑撞到您的汽车中,然后将它们撞到人马座A *。

它似乎可以正常工作。

但是它仍然没有定义。

不要期望结果。