我的程序在这部分代码中崩溃了:
if(fclose(_device) != SUCCESS){
cerr << "Output device library error CLOSING FILE\n";
exit(1);
} 它不打印任何东西,当我写下这一行时:
cout << fclose(_device)<<endl; 它也没有打印任何东西,只是崩溃了我的程序没有进一步的注释。
在我的程序的前一部分中,我用下面这一行初始化文件:
_device = fopen ((char*)filename , "a"); 是什么导致我的程序崩溃?
发布于 2011-04-06 19:17:13
可能在打开时失败,在
_device = fopen ((char*)filename , "a"); 检查_device != NULL
编辑由于您要检查_device在打开后是否有效,因此我倾向于使用调试器在打开时检查_device的值,并将其与传递给_fclose的值进行比较。出于兴趣,_device是否指向诸如"COM2:“之类的文件或通信设备,因为这也可能与问题有关。最后,我会将你的最后一句话分解如下;
int CloseResult = fclose(_device);
if (CloseResult != 0)
cout << errno << CloseResult << endl;原因是您不知道fclose或stream输出是否是导致崩溃的原因。我假设您输出到的流没有链接到您试图关闭的文件;)
发布于 2011-04-06 19:26:02
此外,如果您的程序有bug,导致随机写入内存,那么fclose需要用来关闭文件的信息可能会被覆盖。
您可以尝试使用诸如valgrind之类的内存检查工具来检查情况并非如此。
https://stackoverflow.com/questions/5565394
复制相似问题