我的程序崩溃了这部分代码:
if(fclose(_device) != SUCCESS){
cerr << "Output device library error CLOSING FILE\n";
exit(1);
}
它不会打印任何内容,而当我写下这行时:
cout << fclose(_device)<<endl;
它也没有打印任何东西,只是崩溃我的程序而没有进一步的评论。
在我的程序的早期部分,我使用以下行初始化文件:
_device = fopen ((char*)filename , "a");
什么会导致我的程序崩溃?
答案 0 :(得分:2)
在
之后可能是打开失败_device = fopen ((char*)filename , "a");
检查_device!= NULL
编辑由于您在打开后检查_device是否有效,我倾向于使用调试器检查打开时_device的值,并将其与传递给_fclose的值进行比较。出于兴趣,_device指向文件或通信设备,如“COM2:”,因为这也可能对问题产生影响。最后,我将最后的陈述细分如下:
int CloseResult = fclose(_device);
if (CloseResult != 0)
cout << errno << CloseResult << endl;
原因是您不知道fclose或流输出是否是导致崩溃的原因。我假设您输出的流未链接到您尝试关闭的文件;)
答案 1 :(得分:2)
此外,如果您的程序存在导致随机写入内存的错误,则可能需要使用关闭文件的fclose信息被覆盖。
您可以尝试使用内存检查工具(如valgrind)来检查情况并非如此。