c++中delete的用法
假设A是一个类名。
A a;
if(a==0)
{
delete a;
a=0;
}
a=new A;
这里的delete是一种什么用法?不用delete,直接a=0,难道不可以吗?
[解决办法]
你声明的是个普通对象,而不是指针对象,你不必要new和delete,你要写就这样:
A *a=NULL
a=new A;
…
delete a,它的作用是释放掉申请的内存,与new匹配使用。
[解决办法]
除非你有个转型为指针的成员函数,否则你这个代码就是有问题的
[解决办法]
楼主作为引出问题的代码例子,存在一些问题:
delete a; // a的类型应该为指针类型。
所以,应该为:
A* a = new A;
if (a != 0)
{
delete a;
a = 0;
}
a = new A;
这里的delete的作用是释放指针a所指向内存空间,即将之前占用的内存归还给操作系统,供其进行再分配。如果不用delete,则不会释放内存空间,即原先占用的内存不归还给操作系统,但是该程序也不再使用了,导致的后果就是所谓的内存泄露,应该极力避免这种情况。
[解决办法]