首页
社区
课程
招聘
[求助] 谁能帮我看下这个函数。有个很奇怪的BUG EXCEPTION_EXECUTE_HANDLER 不能捕获.
发表于: 2012-10-15 23:46 5205

[求助] 谁能帮我看下这个函数。有个很奇怪的BUG EXCEPTION_EXECUTE_HANDLER 不能捕获.

2012-10-15 23:46
5205
struct XY
{
   int x;
   int y;
};


int GetDes(ULONG addr,XY _xy)
{

    __try
    {
        if(_xy.x == 0 || _xy.y == 0)return 0x00FFFFFF;


        int _x        = (int)*(float*)(addr + 0x4);
        int _y        = (int)*(float*)(addr + 0x8);

        int x = abs(_x - _xy.x);
        int y = abs(_y - _xy.y);

        x    = x*x;
        y    = y*y;

        return x+y;


    }
    __except(EXCEPTION_EXECUTE_HANDLER)
    {
        OutputDebugString(L"Try_Catch:GetDes");
        return 0x00FFFFFF;
    }
}


这个函数会出现.  



函数汇编代码 蓝色位置就是 出错位置



为什么,。、!!!!!!

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

上传的附件:
收藏
免费 0
支持
分享
最新回复 (5)
雪    币: 99
活跃值: (110)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
为什么我的标题 。那么长 。。。
2012-10-15 23:48
0
雪    币: 209
活跃值: (143)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
看起来能出错的位置就是
        int _x        = (int)*(float*)(addr + 0x4);
        int _y        = (int)*(float*)(addr + 0x8);
内存访问异常
2012-10-16 09:53
0
雪    币: 99
活跃值: (110)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
的确是 内存访问异常。可是 Try Catch ,为什么不能捕获。
2012-10-16 10:35
0
雪    币: 209
活跃值: (143)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
我给addr传0测试,能捕获
2012-10-16 10:54
0
雪    币: 99
活跃值: (110)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
是的。这函数能工作。可是在我程序里 。 一段时间后 就出错了。 调用耶很简单。

		Line[0] = GetDes(p_c_c_x,p_c_c_y,LocalMAPINFO.Coor[Type].LU);
		Line[1] = GetDes(p_c_c_x,p_c_c_y,LocalMAPINFO.Coor[Type].LD);
		Line[2] = GetDes(p_c_c_x,p_c_c_y,LocalMAPINFO.Coor[Type].RU);
		Line[3] = GetDes(p_c_c_x,p_c_c_y,LocalMAPINFO.Coor[Type].RD);
2012-10-16 10:59
0
游客
登录 | 注册 方可回帖
返回
//