zonla
小水手

UID 21600
精华
0
积分 10
帖子 10
阅读权限 10
注册 2006-5-12
状态 离线
|
怎么消除未处理的异常
我的程序里定义了一个Bullet类和Robot类,和一个类似CPoint的类Position.
Robot类中包含成员std::vector<Bullet>m_TBulletVector;
Robot和Bullet里都定义了一个CRect Bullet::getRect()成员函数,
CRect Bullet::getRect(void)const
{
CRect rect;
rect.left = (long)(m_BPosition.x) - BULLET_WIDTH/2;
rect.top = (long)(m_BPosition.y) - BULLET_HEIGHT/2;
rect.right = rect.left + BULLET_WIDTH;
rect.bottom = rect.top + BULLET_HEIGHT;
return rect;
}
Position m_BPosition是Bullet类的一个成员变量;
CRect Robot::getRect()const的定义与CRect Bullet::getRect()类似;
在程序里我定义了一个全局的std::vector<Robot> RobotVector;
程序运行过程中接受LButtonUp消息,
void CTANKView::OnLButtonUp(UINT nFlags, CPoint point)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
Robot temp = CreateRobot(point);
RobotVector.push_back(temp);
//RobotNumber++;
CView::OnLButtonUp(nFlags, point);
}
该程序在Debug生成后的运行过程中出现如下错误;错误出现点在我调用
CRect Robot::getRect()const的时候,
CRect Robot::getRect()const的时候出错,弹出框中信息如下:
TANK.exe 中的 0x77f767cd 处未处理的异常: 用户断点 。
但是如果我用Release生成的话,
如果void CTANKView::OnLButtonUp(UINT nFlags, CPoint point)
只调用一次,程序能够很好的执行;
若调用第二次;
错误将在运行到调用CRect Bullet::getRect(void)const时出错,
弹出框中信息如下:
TANK.exe 中的 0x00401205 处未处理的异常: 0xC0000005: 读取位置 0x00000020 时发生访问冲突 。
请教各位高手如何解决这个Bug,先谢过!
|
|