c++ - 抓双免并妥善处理

标签 c++ memory-management crash

我在 delete() 遇到了一些崩溃。我尝试用 try-catch 包装 delete() 并正确处理它,但我仍然崩溃而不是掉入 catch 部分。

这是我尝试做的示例。

int *i = new int();
delete (i);
try {
    delete (i);
}catch (...) {
    std::cout << "Oops";
}

问题是“为什么我不能用这种方式捕捉到它?”以及“我如何才能正确捕捉到这种情况?”。

最佳答案

删除运算符不抛出异常:

Exceptions (none) (until C++11)

noexcept specification: noexcept (since C++11)

比照cppreference .

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

关于c++ - 抓双免并妥善处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44023364/

相关文章:

javascript - JavaScript <-> DOM 循环引用问题详解

linux - 替换进程中的物理页时触发 BUG 断言

android - Android-每次我尝试开启应用程式时都会当机

java - Java 中崩溃报告的策略/技术

c++ - 友元函数和声明

c++ - 了解 move 语义与模板元编程的好处

c++ - 创建带括号的 std::vector 作为默认大小

c++ - 将指针与 NULL 进行比较时程序崩溃

mobile - 在 CLR/Mono 上经常调用的函数中进行分配是否效率低下?

c++ - 按输出窗口后 Xcode 6 意外退出