gpt4 book ai didi

c++ - MS Visual Studio 2005 C++ 异常处理

转载 作者:太空宇宙 更新时间:2023-11-04 12:15:34 25 4
gpt4 key购买 nike

我有一个在 MS Visual Studio 2005 中构建的 C++ 应用程序,它链接到第 3 方库。对于某个输入,应用程序在第 3 方库中崩溃(显然是在 realloc.c 中的某处;因此必须是某种内存问题)。我在发布中运行,因为输入量很大。所以我一直跑到崩溃然后选择调试。当我单独调试 guilty 函数时,我希望使用一些异常处理来防止应用程序崩溃,而是干净地退出。所以我使用了类似的东西:

try {
//- call 3rd party application function that fails
}
catch(...) {
//- handle exception or whatever
Logger::Fatal("Fatal error: Exiting...");
return false;
}

但令我惊讶的是应用程序仍然崩溃了!我期待看到它显示错误消息,因为我大概已经用省略号 (...) 捕获了所有异常;我在这里错过了什么?我什至尝试在项目属性 -> C/C++ -> 代码配置 -> 启用异常处理中设置/EHca(原为/EHsc)。关于可能导致问题的相关注释,以下用法是否正确?

my_class* mc[] = {nil, nil, nil};
for (int i = 0; i < 3; ++i) {
mc[i] = new my_class();
//-Do stuff with mc[i]
if (mc[i] != nil) {
delete mc[i];
mc[i] = nil;
}
}

未能使异常处理正常工作是相当令人费解的。我当然会感谢 C++ 专家的想法/见解。顺便说一句,同样的问题也发生在 Linux (RHEL5) 上,但我目前正试图让异常处理在 Windows 上工作。

注意:当我让它在崩溃后进行调试时。我确实收到“访问冲突......无法读取位置”消息。有了这个更新的信息,我希望 C++ 中的某些东西仍然可以在 Windows 和 Linux 上运行以应对此类崩溃。

最佳答案

您是否尝试通过调用 SetUnhandledExceptionFilter 来捕获崩溃? ?

关于c++ - MS Visual Studio 2005 C++ 异常处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7844915/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com