所以我有一些看起来像这样的代码,用 Visual Studio 2010 编写和编译:
if ( outputFile.is_open() )
{
outputFile.close();
}
if ( !outputFile.is_open() ) // condition for sanity-checking
{
outputFile.open("errorOut.txt", ios::out);
}
这会在访问冲突时崩溃。附加调试器显示第一个条件为假(outputFile
未打开),第二个条件为真(outputFile
已关闭,这很好,因为我刚刚检查过)。然后open()
被调用,并最终locale::getloc()
尝试取消引用空指针,但我不知道为什么会发生这种情况(因为现在标准库中有三个类)。
有趣的是,文件“errorOut.txt”确实被创建了,即使open
调用崩溃了。
我已经在调试器中看了几个小时,但老实说,我不知道发生了什么。任何人都有任何想法甚至试图确定代码有什么问题?完全有可能其他地方的某些代码导致了这种情况(继承代码),但是有很多,我什至不知道去哪里找。到目前为止,一切似乎都很好。