c++ - fwrite.cpp 中的调试断言失败

标签 c++ c exception fopen fwrite

对于任何缺乏知识提前抱歉,但我是一名 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/

相关文章:

c++ - 使用 boost C++ 库?

c++ - getchar()函数如何输出

c++ - 矩阵实现类 C++ 中的内存管理

python - 抑制 numpy 异常消息

c++ - 如何迭代打印 std::tuple

c - 相当于 CUDA 类型转换内在函数 __double2loint、__double2hiint 和 __hiloint2double 的内在函数

c - Makefile:将多个c文件制作成多个二进制文件

android - 调试C native 函数android ndk - sendto()

c++ - 使用空指针参数和不可能的后置条件构造标准异常

c++ - 如何在c/c++控制台程序中正常输出utf8编码的字符?