猿问

双重删除会发生什么?

Obj *op = new Obj;

Obj *op2 = op;

delete op;

delete op2; // What happens here?

如果您不小心进行两次删除,最糟糕的情况是什么?有关系吗?编译器会抛出错误吗?


紫衣仙女
浏览 344回答 3
3回答

繁华开满天机

它会导致不确定的行为。什么都可能发生。实际上,运行时崩溃可能是我所期望的。

回首忆惘然

未定义的行为。该标准不做任何保证。操作系统可能会做出一些保证,例如“您不会破坏另一个进程”,但这对您的程序没有太大帮助。您的程序可能崩溃。您的数据可能已损坏。您下一笔薪水的直接存款可能会从您的帐户中扣除500万美元。
随时随地看视频慕课网APP
我要回答