gpt4 book ai didi

C++ assert() 失败,没有给出任何错误信息,也没有给出失败的行

转载 作者:搜寻专家 更新时间:2023-10-31 00:21:40 32 4
gpt4 key购买 nike

我的代码中有一个奇怪的问题。我在代码周围散布着许多断言,并且都运行良好。每当断言失败时,我都会收到一条消息,告诉我失败发生的行号。 今天我在加载文件的函数中写了另一个断言。只是想确保 fie 存在。一个非常简单的断言。相关代码如下:

//Check that the file exists and can be opened
FILE* f = fopen(filename, "rb");

#ifdef ASSERTIONS_ON
assert(f!=NULL);//@problem For some reason while all other asserts work, this one just crashes the program without reporting line
#else
if(f == NULL)
return MODEL_LOAD_FILENOTFOUND;
#endif

fclose(f);

我知道这没有多大帮助,只是想展示我的问题所在。我的操作系统是 Windows 7。编译器是 GCC。我从 Windows 收到的错误消息是常见的运行时错误,但没有行报告:

“应用程序已请求运行时以异常方式终止它。请联系应用程序的支持团队以获取更多信息”

可能是什么问题?什么可能导致断言失败只是请求终止而不报告它发生的行,而在所有其他情况下,在相同的代码中它按预期工作?在此先感谢您的帮助!

最佳答案

您很可能在断言执行之前对堆栈的某处进行了 FUBAR。

关于C++ assert() 失败,没有给出任何错误信息,也没有给出失败的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4283091/

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