每當我退出程序時,它都會給我這個異常「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