我正在坐毕业设计,坐一个电路分析程序:先画出电路图,然后对其进行分析,
但是在调试的时候,问题是这样子的,当我画一个电阻在电路图上,最大化就出错,我在2000及XP下调试提示有一个什么内存不能读写,在98下没问题。可能因为当放置一个电阻是,我用new 生成了一个对象,我用NuMega BoundsChecker检查提示有内存泄漏,
case IDT_RES:
m_bDrawing=true;
if(m_bIsHor)
m_usrCurrentObject=new CDrawRes(m_nCurrentColor);
else
{
m_usrCurrentObject=new CDrawRes(m_nCurrentColor,false);
m_bIsHor=true;
}
m_nMoveMode=m_usrCurrentObject->NewPoint (point.x,point.y);
m_usrCurrentObject->Draw(pDC);
pDoc->SetModifiedFlag(); // 标记文档内容已经被改变,提示用户在关闭时保存
break;
就是上面的那句new 有问题。
请问该怎么解决啊?
但是在调试的时候,问题是这样子的,当我画一个电阻在电路图上,最大化就出错,我在2000及XP下调试提示有一个什么内存不能读写,在98下没问题。可能因为当放置一个电阻是,我用new 生成了一个对象,我用NuMega BoundsChecker检查提示有内存泄漏,
case IDT_RES:
m_bDrawing=true;
if(m_bIsHor)
m_usrCurrentObject=new CDrawRes(m_nCurrentColor);
else
{
m_usrCurrentObject=new CDrawRes(m_nCurrentColor,false);
m_bIsHor=true;
}
m_nMoveMode=m_usrCurrentObject->NewPoint (point.x,point.y);
m_usrCurrentObject->Draw(pDC);
pDoc->SetModifiedFlag(); // 标记文档内容已经被改变,提示用户在关闭时保存
break;
就是上面的那句new 有问题。
请问该怎么解决啊?
但是我不知道该在那儿delete掉啊?而且调试时错误在
void CDemoDoc::DrawObjects(CDC* pDC)
{
int i=m_aObjects.GetSize();
int j;
for(j=0;j<i;j++)
{
CDrawObject* pObject=m_aObjects[j];
pObject->Draw(pDC);//错误在此
if(pObject->m_bSelected)
{//以前已经选择了,设置热点
pObject->HotPoints(pDC);
}
}
}
其中的Draw函数为一个虚函数,如电感类的为:
void CDrawIndu::DrawIndu(CDC* pDC)
{
pDC->Arc(m_x+9,m_y-7,m_x+19,m_y+3,m_x+19,m_y+3,m_x+9,m_y+3);
pDC->Arc(m_x+17,m_y-7,m_x+27,m_y+3,m_x+27,m_y+3,m_x+17,m_y+3);
pDC->Arc(m_x+25,m_y-7,m_x+35,m_y+3,m_x+35,m_y+3,m_x+25,m_y+3);
pDC->MoveTo(m_x+8,m_y);
pDC->LineTo(m_x,m_y); pDC->MoveTo(m_x+35,m_y);
pDC->LineTo(m_x+43,m_y);
}
, 因为你的串列中的对象都是同一个父类, 所以请将父类的析构函数设虚拟