C++ 删除同一对象两次
可能重复:C++ 删除同一对象两次,c++,object,delete-operator,C++,Object,Delete Operator,可能重复: 我知道对同一个对象调用delete是灾难性的。但是,只要在第二次调用delete之前没有为其他对象重新分配内存,这是正确的。但是,即使做下面的事情也是错误的?如果我删除cout,代码就不会转储核心 int main() { A *a1 = new A(); delete a1; cout<<a1<<endl; delete a1; } intmain() { A*a1=新的A(); 删除a1; 参见: 是的,这是非常错误的
我知道对同一个对象调用delete是灾难性的。但是,只要在第二次调用delete之前没有为其他对象重新分配内存,这是正确的。但是,即使做下面的事情也是错误的?如果我删除cout,代码就不会转储核心
int main()
{
A *a1 = new A();
delete a1;
cout<<a1<<endl;
delete a1;
}
intmain()
{
A*a1=新的A();
删除a1;
参见:
是的,这是非常错误的
最大的问题是行为是未定义的。因此,在一种情况下,在一个编译器上,您可能会侥幸逃脱,但通常它会导致崩溃。请参阅:
是的,这是非常错误的
最大的问题是行为是未定义的。因此,在一个编译器上的一种情况下,您可能会侥幸逃脱,但通常它会导致崩溃。请澄清您的问题这是未定义的行为。它可能会工作,也可能会中断。请记住,未定义行为的许多可能结果之一是“似乎工作正常”。然后问自己是否想要依赖它。请你澄清你在问什么这是未定义的行为。它可能会工作,也可能会中断。记住,未定义行为的许多可能结果之一是“似乎工作正常”。然后问自己是否想要依赖它。