【发布时间】:2011-12-13 00:22:15
【问题描述】:
假设我有一个 C 库,我正在使用 Visual Studio 链接到 Windows 上的 C++ 程序。这个 C 库是黑盒子。如果此库中发生致命错误(例如取消引用 null),程序/OS 将如何处理此运行时错误?我知道在 C++ 中存在空引用异常,因此您可能可以使用 try/catch 处理此类错误,但由于这是一个 C 库,它不会发出 throw,对吧?那么会发生什么呢?程序将终止,但如果不是 C++ 异常,是通过什么方式终止的?
【问题讨论】:
-
C++ 中的空引用异常?这不是标准要求的,是吗?我很确定我使用的 C++ 实现都只是段错误。
-
也许巧妙地使用 atexit() 会有所帮助?不过不确定。
-
也许我理解错了,但我认为 MSVC 发出了取消引用空指针的异常。他们称其为“空引用异常”,也许这里的意思不是 C++ 异常?此外,当我启用调试异常(Visual Studio 中的调试菜单 >> 异常...)时,当发生这样的空指针取消引用时,我会中断。
-
NullReferenceException 是一个 .NET 类。你在考虑 C++/CLI 吗?这不是标准的 C++。
-
据我所知,这不是 C++ 异常。它更像是一个信号。