如何在用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. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 腾讯自媒体平台:腾讯QQ看点上线创作中心
- .NET 程序设计规范(C#)
- ruby-on-rails – ActiveRecord使用连接来提高性能,但是将所
- gem安装时出现 undefined method `size' for nil:NilCl
- flash – ffmpeg:将仅音频flv转换为swf
- reactjs – ReactDOM.render():无效的组件元素.不要传递组
- 一个匹配数字和字母密码的正则表达式
- AJAX+JQuery+SpringMVC实现图片上传
- postgresql – Postregsql日期差异基于秒
- AFNetworking获取服务端plist文件,XML文件