C++为什么调试器会在这个小代码块的析构函数中触发断点



你好,由于某种原因,这段代码没有编译,而且我的一生都无法理解。当它调用析构函数时,它给了我一个错误。有人能告诉我为什么请吗

错误为:

抛出异常test.exe触发了一个断点">

#include <iostream>
using namespace std;
class X {
public:
X(int i)
{
p = new (int);
*p = i;
}
~X() { delete p; }
int* p;
};
int main()
{
X x1(1);
X x2(2);
x2 = x1;
}

因为您分配了

x2=x1;

指针将从x1复制到x2,并且它尝试删除同一对象两次。

最新更新