在浅拷贝上调用删除不会爆炸[重复]

问题描述 投票:0回答:1

这个问题在这里已有答案:

在下面的代码中,为整数分配内存,然后生成浅拷贝,最后在其上调用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;
}
c++ memory-management delete-operator
1个回答
1
投票

未定义的行为意味着任何事情都会发生。

它可能会崩溃。

它可能会撞坏你的车。

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

它可能会让射手座A *撞到你的大脑。

它可能会使你的大脑撞到你的车里,然后将它们撞到射手座A *。

它似乎可行。

但它仍未定义。

不要指望结果。

© www.soinside.com 2019 - 2024. All rights reserved.