对于任何缺乏知识提前抱歉,但我是一名 C# 开发人员,试图查看 C 问题。
一位客户在一台新机器上安装了一个软件,该软件在其他机器上运行没有任何问题。
他们收到错误:
Debug Asertion Failed!
Program: C:\MyDirectory\MyDll.dll
File: minkernel\crts\ucrt\src\appcrt\studio\fwrite.cpp
Line: 33
Expression: stream != nullptr
有问题的 FOpen 正在以 w+ 权限打开,但显然失败了,这就是 FClose 抛出此异常的原因。我知道在尝试 FClose 之前应该对指针进行空检查,但稍后会修复它。
FOpen 仅指定文件名,因此应在当前工作目录中创建。
因为 FOpen 失败并且尝试使用 w+(授予读、写和创建文件权限),我假设它失败的唯一原因是操作系统级别的无效权限是否正确?创建文件的程序?
我目前无法访问机器以查看。在我获得访问权限之前尝试积累可能的问题。
最佳答案
很多事情都会导致 fopen
失败,所以很难说。然而,权限不足是一个很常见的原因。要找出真正的原因,您可以使用操作系统提供的错误信息,您可以得到如下信息:
#include <errno.h>
....
char* filename = "example.txt";
fp = fopen (filename,"w+");
if (!fp) {
fprintf(stderr, "error opening %s: %s", filename, strerror(errno));
return;
}
希望对您有所帮助:-)
关于c++ - fwrite.cpp 中的调试断言失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48459731/