gpt4 book ai didi

c - 什么是 Microsoft Visual Studio 中的断言错误?和未处理的异常访问冲突?

转载 作者:行者123 更新时间:2023-12-04 04:43:17 25 4
gpt4 key购买 nike

什么是断言错误?我读过它可能是由传递给函数的指针的 N​​ULL 值引起的。我正在从 Visual Studio 读取文件,并且我确定该文件存在。怎么会出现断言错误?

另外,我在我的 c 程序中发现了一个 assert 语句

assert(pred_dir<=2);

这段代码是从互联网上下载的(h.264视频编解码器的引用软件),我不太确定我怎么会得到这样的错误。抱歉,我无法发布源代码,因为它太大并且包含四个项目。我只修改了代码以读取文本文件并收到此错误。

另外,什么是未处理的异常,访问冲突错误?

最佳答案

assertion是一个条件,作为程序员,您希望在程序中的给定点明确为真。许多编程语言为您提供了一种断言条件的方法,作为程序员,您可以使用断言在许多问题发生之前发现和诊断它们。

例如,如果在程序中的某个特定点,您需要一个名为 a 的变量。成为 0 ,你可以写:

assert(a == 0);

如果在运行时, a不是 0在程序的那个特定部分,你会得到一个人为错误,调试器会在那里停止,这样你就可以诊断你的问题,并理解为什么 a不是 0 .

一个非常常见的断言是这样的
assert(some_pointer != NULL); // We already checked this before

在您的具体示例中,一个名为 pred_dir 的变量预计小于或等于 2 .如果您在那里收到断言错误,则意味着出于某种原因, pred_dir大于 2 .由于程序的其余部分没有预料到这一点,因此继续进行是没有意义的,程序将在那里停止。

请记住,断言是帮助您实现“健全性检查”的调试辅助工具,而不是向用户显示错误的一种方式。因此,我们鼓励您在编写程序时使用它们中的很多,以确保您对程序状态的所有假设都是正确的。如果你的程序是正确的,断言应该永远不会停止程序。

由于断言是一种调试辅助工具,因此在发布程序以分发给用户时检查它们没有任何意义。因此,许多程序员在这样做时会关闭断言检查。在创建发布版本时,许多环境(如 Visual Studio)会自动关闭它们。

检查 wikipedia article ,因为它更详细地解释了断言。

如果在发布的产品或第三方库上触发断言,则很可能意味着该程序中存在错误。如果您能够重现该问题,请将其报告给程序的作者。

关于c - 什么是 Microsoft Visual Studio 中的断言错误?和未处理的异常访问冲突?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18578607/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com