每当我退出程序时,它都会给我这个异常“0xC0000022:一个进程请求访问一个对象,但没有被授予访问权限。”程序在退出时崩溃
它在_file.c中名为_lock_file的函数的末尾断开。
在试图缩小问题的原因之后,我发现它不会崩溃,如果我在程序中删除所有fclose()函数调用,然后清理并重建我的程序。即使函数本身从未被调用,它仍会崩溃。显然这个解决方案并不理想。
当我尝试使用fstream代替它时,它在程序开始时产生了类似的崩溃。
还值得一提的是我的程序使用SDL。
编辑:有人要求一个最小的例子,这是我所认识的。
的main.cpp
#include <stdlib.h>
#include <SDL.h>
/*...*/
#pragma comment(lib, "SDL.lib")
#pragma comment(lib, "SDLmain.lib")
/*...*/
int main(int argc, char **argv)
{
if(false)
fclose(NULL);
return 0;
}
draw.cpp
/*...*/
如果我运行这个它会崩溃的,就像我上面提到的退出。是的draw.cpp完全注释掉了,但如果我从项目中删除它,程序将运行良好。所有其他文件已从项目中删除。
Edit2:作为对karlphillip的回应,我决定仔细检查它是否确实在运行,看起来它实际上是在这个例子的开始时崩溃。
另外它是一个Win32项目。
没有看到您的代码,很难确切地知道是什么导致问题,但可能的原因是您正在写入对象的析构函数中的日志文件,但在调用析构函数之前关闭文件。 – 2010-12-21 18:39:01
在执行了一个活动并与另一方的精神交谈之后,我被告知你的问题实际上在文件wtf_you_want_me_to_guess.cpp的第42行。 – 2010-12-21 18:42:18