c++ - 程序在退出时崩溃

标签 c++ c visual-studio-2010 crash sdl

每当我退出我的程序时,它都会给我这个异常“0xC0000022:一个进程请求访问一个对象,但没有被授予这些访问权限。”

它在 _file.c 中名为 _lock_file 的函数末尾中断。

在尝试缩小问题原因的范围后,我发现如果我删除程序中的所有 fclose() 函数调用,然后清理并重建我的程序,它不会崩溃。即使函数本身从未被调用,它仍然会崩溃。显然这个方案并不理想。

当我尝试改用 fstream 时,它在程序开始时产生了类似的崩溃。

另外值得一提的是,我的程序使用了 SDL。

编辑:有人要求提供一个最小示例,这就是我想出的。

主要.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;
}

绘图.cpp

/*...*/

如果我运行它,它将在退出时崩溃,就像我上面提到的那样。是的,draw.cpp 已被完全注释掉,但如果我将其从项目中删除,程序将运行良好。所有其他文件都已从项目中删除。

Edit2:作为对 karlphillip 的回应,我决定仔细检查它是否真的在运行,并且看起来它在这个例子开始时确实崩溃了。

也是一个Win32项目。

最佳答案

退出时崩溃通常意味着堆在程序执行期间损坏。尝试使用内存检查器查找位置。尝试使用 _CrtDumpMemoryLeaks()

关于c++ - 程序在退出时崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4502685/

相关文章:

c++ - C++中声明和定义分开的优点和缺点是什么?

c - fgets 和 printf 的问题..打印字符串

c# - 使用 Resharpers 模式目录查找具有 3 个以上参数的构造函数

c++ - 为什么 Visual Studio 的智能感知会显示私有(private)成员和函数?

c++ - 如何使用.h 文件中的按钮单击事件调用.cpp 的功能?

c++ - 如何为 boost::serialization 指定 nvp 包装器?

c++ - 使用 xerces 读取 C++ 中的属性名称

c - 为什么使用malloc()?为什么变量的大小没有增加?

c++ - 如何从 DICOM 文件中提取 PIXEL?

c++ - Qt + VS2010 : The program can't start because <xyz>. 你的电脑缺少dll