c++ - 如果没有人调用该函数,为什么我会得到 First-chance 异常?

标签 c++ visual-studio-2008 exception first-chance-exception

突然我的代码开始抛出异常 VideoPlayer.exe 中 0x7731c41f 处的第一次机会异常:Microsoft C++ 异常:内存位置 0x0018f5dc 处的 GenICam::RuntimeException.. 我找不到它的确切位置throws from,所以我在 main 函数中和 main 之外的所有内容都进行了注释。我开始一个一个地取消注释代码块,而 main 中的代码仍然是commented。在这样做的时候我注意到有一个函数 A 当它被注释时没有异常,但是当它被取消注释时它会抛出上面的异常。

我不明白如果不调用它怎么会导致异常(我在其中放置了断点并且 main 中的代码被注释了)?

最佳答案

您的函数将在静态初始化期间使用。 举个例子:

#include <iostream>
bool static_func()
{
    std::cout << "Before main" << std::endl;
    return true;
}
static const bool b = static_func();
int main()
{
    std::cout << "We are main" << std::endl;
    return 0;
}

因为您只会看到第一次机会异常,所以它会被捕获并处理。例如,我在抽象工厂中看到过这样的构造,工厂在其中进行 self 配置。
您的断点未命中的原因一定是其他原因。

关于c++ - 如果没有人调用该函数,为什么我会得到 First-chance 异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16883908/

相关文章:

java - UnsupportedOperationException 将 byte[] 转换为 float[]

c++ - 如何包装对象,使它们成为无法交互的独立类型?

javascript - 如何在我的网站中使用 Chrome 扩展功能 (NaCl)?

c++ - 按住鼠标按钮时如何绘制?

visual-studio - 与 Visual Studio 2008 提供的测试库相比,其他测试库有什么优势?

java - Java 中抛出异常的高级概述

c++ - 如何使 AddCallback() 更安全 - 对象中不同事件的函数

c# - 在编辑器中对枚举项进行排序

Visual Studio 2008 中的 Javascript 代码段

java - Android 应用程序因图像而崩溃