c++ 怎么用delete

来源:百度知道 编辑:UC知道 时间:2024/09/23 23:25:02
从抽象类继承了几个类计算面积后要删除指针 删不掉 该怎么办
Base *p;
p=new Derived1;
//...
delete p; //删不掉
if(p) cout<<p<<" not cleared\n";
delete p;后那我该怎么从内存中读出误删的数据呢

按承诺该加到125分的可是已经提高2次悬赏了百度不允许我会在结束问题的时候加上奖励

delete只是吧指针所指的内存给释放掉,并没有把指针本身删掉。所以delete p;后p并不等于null,它还志向原来的内存地址,成为野指针,再用就容易产生错误,最好delete后,赋值null。
知道误删了改过来就行了么,误删的那部分内存会由操作系统重新分配给其它指针或者变量,就是再读出来也可能已经不是原来的内容了。

删不掉你在前面加*/就可以拉

Base *p=NULL;//初始化为NULL是定义指针的好习惯
p=new Derived1;
//...
if(p)
{
delete p; //会删除掉的不用担心
p=NULL;//然后把指针赋值为空
}
if(p) cout<<p<<" not cleared\n";