delete mycar;
mycar=NULL;
重复了
只要第一句就可以了
mycar=NULL;
重复了
只要第一句就可以了
解决方案 »
- Winsock中select的问题 很诡异 不要鄙视,,
- 最近VC/MFC社区挺火,我也来散点分!大家说说有没有受到金融危机的影响
- ********继续散20分,第10个人进来后结贴,为的是细水长流**********
- 如何在Windows 2000下获取使用LogonUser()时需要的SC_TCB_NAME权限?
- 为何位图不显示??????
- 如何在自己的程序中嵌入windows media player 控件?
- 在.cpp文件中如何用ifdef 来根据定义判断是否包含一个头文件。急用,万分感谢!!
- 谁有Visual Fortran的下载地址?任何其它的也可以,只要是可视化的fortran就可以!!
- 拜托!赐教!!
- 请教:用Hex(number)函数将十进制数转换成十六进制数时,需要什么头文件吗?
- 什么是调试版本?什么是发布版本?在VC里哪里能设吗?
- 怎样把一个文件变为空?
用 delete mycar就行了
这是个指针啊,懂吗?!有什么情况下不可以
mycar = NULL;原因很明显,你的类CCar有问题,它在内存使用的时候越界了,
破坏了内存块的信息,导致delete无法知道该内存块的情况,如大小等!
delete mycar;
mycar=NULL;
这样写非常正确,也是非常好的编码习惯,因为delete mycar;之后mycar就指向了无效的内存,一些书上叫野指针吧,如果这个时候再对mycar进行操作(比如再一次delete mycar),嘿嘿,天知道会发生什么.
所以,要mycar=NULL;因为delete NULL 永远是正确的.
to楼主,从你给出的代码我也看不错什么错误,需要更多代码了.
如果你越界了,那这4个Byte不是0xFD了,那VC++就会抱错了!
{
protected:
DECLARE_SERIAL(CCar) // Attributes
public:
int DirectionInRoad; //行驶方向 define east=1,south=2,west=3,north=4
int WheelDirection; //转弯方向 define straight=0,left=1,right=2.
double CurrentSpeed; //当前车速;
double CurrentX; //车的X位置;
double CurrentY; //车的Y位置;
double angle; //转弯时的角度
bool CarSize; //车型,(大/小)
private:
double CurrentAdd; //当前加速度;
double DelayAdd[2]; //贮存的延时的加速度值;(延时两个时间步)
CPoint RP2LP(double x,double y); //转换到视图的逻辑坐标函数;
// Operations
public:
CCar(); void DrivingAsFollow(double Dis, double Speed);//按跟车规律行驶;
void DrivingAsLinearAdd(double a); //线性加速行驶;
void DrivingAsFree(double speed); //匀速行驶;
void DrawCar(CDC* pDC); //绘出;
#ifdef _DEBUG
virtual void Dump( CDumpContext& dc ) const;
#endif
virtual void Serialize(CArchive& ar);
virtual void AssertValid();
};
究竟哪里出错了呢? 我真不知道。再帮我看看!怎样会导致内存越界?