捕捉双重免费并妥善处理

时间:2017-05-17 11:19:03

标签: c++ memory-management crash

我在+面临一些崩溃。我尝试用try-catch包装delete()并正确处理它但我仍然崩溃而不是陷入catch部分。

以下是我尝试做的示例。

delete()

问题是“为什么我不能这样抓住它?”和“我怎么能正确地抓住这样的情况?”。

3 个答案:

答案 0 :(得分:5)

删除操作符不会抛出异常:

  

异常(无)(直到C ++ 11)

     

noexcept specification:noexcept(自C ++ 11起)

cf cppreference

双重删除是编程错误。您不应该尝试处理它:使用调试工具来摆脱它们(以及使用RAII和使用RAII的标准类更好的内存管理)

答案 1 :(得分:1)

delete是一个无异常操作,所以你将无法捕获它。

答案 2 :(得分:-2)

使用堆栈中的变量来存储变量是否已删除。如果你不能这样做,那么尝试使用realloc而不是delete。