游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2490|回复: 2

大家帮忙来纠错2:处未处理的异常: 用户断点

[复制链接]

48

主题

142

帖子

142

积分

注册会员

Rank: 2

积分
142
发表于 2006-9-19 00:24:00 | 显示全部楼层 |阅读模式
编了一个单独调用模型的程序,用的是vc2003,调试,模型出来了,
但关闭的时候跑出一个框,其中有句子曰:Debug Assertion Failed!
点击其中的[重试]按钮,
调试框输出:
D3D9 Helper: Enhanced D3DDebugging disabled; Application was not compiled with D3D_DEBUG_INFO
Direct3D9: (INFO) :======================= Hal SWVP device selected

steering.exe 中的 0x00414606 处未处理的异常: 用户断点 。
调用堆栈框显示:
steering.exe!operator delete(void * pUserData=0x003c0ff0)  行52 + 0x51        C++
steering.exe!Cleanup()  行145 + 0x17        C++         <@@>
steering.exe!WinMain(HINSTANCE__ * hInst=0x00400000, HINSTANCE__ * __formal=0x00000000, HINSTANCE__ * __formal=0x00000000, HINSTANCE__ * __formal=0x00000000)  行375        C++
steering.exe!WinMainCRTStartup()  行251 + 0x30        C
kernel32.dll!7c816fd7()        
看样子是Cleanup()  行出了错.
请看
VOID Cleanup()
{
    if( g_pMeshMaterials != NULL )
        delete[] g_pMeshMaterials;            // <@@>

    if( g_pMeshTextures )
    {
        for( DWORD i = 0; i < g_dwNumMaterials; i++ )
        {
            if( g_pMeshTextures )
                g_pMeshTextures->Release();
        }
        delete[] g_pMeshTextures;
    }
    if( g_pMesh != NULL )
        g_pMesh->Release();
   
    if( g_pd3dDevice != NULL )
        g_pd3dDevice->Release();

    if( g_pD3D != NULL )
        g_pD3D->Release();
}
这里怎么会出错呢?
双击<@@>行,箭头直指delete[] g_pMeshMaterials;          // <@@>
[em3]呼唤牛人

5

主题

686

帖子

697

积分

高级会员

Rank: 4

积分
697
QQ
发表于 2006-9-19 14:47:00 | 显示全部楼层

Re:大家帮忙来纠错2:处未处理的异常: 用户断点

任何一次释放操作,无论delete还是release,都要把指针赋值为NULL,否则第二次调用释放函数的时候就会去释放错误的区域

48

主题

142

帖子

142

积分

注册会员

Rank: 2

积分
142
 楼主| 发表于 2006-9-25 08:35:00 | 显示全部楼层

Re:大家帮忙来纠错2:处未处理的异常: 用户断点

终于知道自己怎么死的.
原来Cleanup()
调用了两次.



谢谢楼上的.
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2026-1-25 12:44

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表