加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

如何在用C编译的C库中处理运行时错误?

发布时间:2020-12-16 10:20:51 所属栏目:百科 来源:网络整理
导读:假设我有一个C库,我使用Visual Studio链接到 Windows上的C程序.这个C库是黑盒子.如果此库中发生致命错误(例如取消引用null),程序/ OS将如何处理此运行时错误?我在C中知道存在空引用异常,所以你可以使用try / catch处理这样的错误,但由于这是一个C库,它不会
假设我有一个C库,我使用Visual Studio链接到 Windows上的C程序.这个C库是黑盒子.如果此库中发生致命错误(例如取消引用null),程序/ OS将如何处理此运行时错误?我在C中知道存在空引用异常,所以你可以使用try / catch处理这样的错误,但由于这是一个C库,它不会发出一个throw,对吧?那会发生什么?该程序将终止,但通过什么方式,如果不是C异常?

解决方法

在本机代码中取消引用空指针将导致Windows上的“访问冲突”,或Unix / Linux上的“分段错误”.同一件事的不同名称.它是检测错误的CPU,它调用操作系统中的处理程序,终止进程.

在基于VM的语言(例如.NET或Java)中取消引用空引用将引发您可以捕获的异常.这是可能的,因为VM位于程序和CPU之间,它可以在尝试实际解除引用之前检测到null.

C库是本机代码,因此您将获得访问冲突.您可以从真正的C程序中获得相同的结果,该程序也可以编译为本机代码.但是,如果您使用的是Managed C或C/C++LI,那些是编译为CIL并在.NET运行时上运行的变体,因此在这种情况下会出现NullReferenceException.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读