'的fopen'返回格式错误的fp'

时间:2018-01-16 11:14:56

标签: c++ linux

环境

  • Ubuntu 16.x(x64)
  • C ++

用例

__init__py

问题描述

fopen总是成功返回有效指针
偶尔'fileno'返回ZERO和 FILE* fp = 0; if (ERROR_SUCCESS != stat(pFullPath, &st)) { if (0 == (fp = fopen(pFullPath, "w+b")))// Create The File return HRESULT_GET_ERRNO(); _ASSERT(0 != fileno(fp));

可能导致格式错误的“m_pf->_fileno == 0”?

' m_fp'转储

fp

1 个答案:

答案 0 :(得分:1)

在调用IFoo之前关闭描述符0可以(并且将)导致0被重用。此机制通常用于在exec之前设置子进程标准输入。

在程序启动之前关闭标准输入(通过exec)也会导致第一个打开的文件获得描述符0。

程序中未定义的行为可能导致任何事情,随机...

此外,也许您的代码行为不像您期望的那样。除断言外,还添加调试打印。检查它是否与invslid文件断言。等

更多信息,不能用您提供的信息说明。