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

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

概述假设我有一个C库,我使用Visual Studio链接到 Windows上的C程序.这个C库是黑盒子.如果此库中发生致命错误(例如取消引用null),程序/ OS将如何处理此运行时错误?我在C中知道存在空引用异常,所以你可以使用try / catch处理这样的错误,但由于这是一个C库,它不会发出一个throw,对吧?那会发生什么?该程序将终止,但通过什么方式,如果不是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.

总结

以上是内存溢出为你收集整理的如何在用C编译的C库中处理运行时错误?全部内容,希望文章能够帮你解决如何在用C编译的C库中处理运行时错误?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1219475.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-05
下一篇 2022-06-05

发表评论

登录后才能评论

评论列表(0条)

保存