首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >程序在fclose()上崩溃

程序在fclose()上崩溃
EN

Stack Overflow用户
提问于 2011-04-06 19:12:31
回答 2查看 1.9K关注 0票数 0

我的程序在这部分代码中崩溃了:

代码语言:javascript
复制
if(fclose(_device) != SUCCESS){  
    cerr << "Output device library error CLOSING FILE\n";  
    exit(1);  
}  

它不打印任何东西,当我写下这一行时:

代码语言:javascript
复制
cout << fclose(_device)<<endl;  

它也没有打印任何东西,只是崩溃了我的程序没有进一步的注释。

在我的程序的前一部分中,我用下面这一行初始化文件:

代码语言:javascript
复制
_device = fopen ((char*)filename , "a");  

是什么导致我的程序崩溃?

EN

回答 2

Stack Overflow用户

发布于 2011-04-06 19:17:13

可能在打开时失败,在

代码语言:javascript
复制
_device = fopen ((char*)filename , "a");  

检查_device != NULL

编辑由于您要检查_device在打开后是否有效,因此我倾向于使用调试器在打开时检查_device的值,并将其与传递给_fclose的值进行比较。出于兴趣,_device是否指向诸如"COM2:“之类的文件或通信设备,因为这也可能与问题有关。最后,我会将你的最后一句话分解如下;

代码语言:javascript
复制
int CloseResult = fclose(_device);
if (CloseResult != 0)
  cout << errno << CloseResult << endl;

原因是您不知道fclose或stream输出是否是导致崩溃的原因。我假设您输出到的流没有链接到您试图关闭的文件;)

票数 2
EN

Stack Overflow用户

发布于 2011-04-06 19:26:02

此外,如果您的程序有bug,导致随机写入内存,那么fclose需要用来关闭文件的信息可能会被覆盖。

您可以尝试使用诸如valgrind之类的内存检查工具来检查情况并非如此。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5565394

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档