还有一个关于指针释放的问题
如果在函数中声明一个指针变量,但是没有使用new创建新的对象如:
CSpheral* pS=new CSpheral();
CSpheral* p=NULL;
p=pS;
象p这种指针变量,用不用delete回收阿
ps 因该是用delete回收 而p属于一般的类指针。因该由析构函数自动析构吧 千言万语不如一段代码 #include<iostream.h> class CSpheral{ int a; public:~CSpheral(){cout<<"destructor used"<<endl;} }; int main(){ CSpheral* pS=new CSpheral(); CSpheral* p=NULL; p=pS;
delete pS; //delete p;
return 0; } 你会发现去掉注释 ,虽然也能通过编译但是执行的时候会产生严重的错误 可以看到析构函数执行了两次。 /// 拜托写代码不要用中文输入,你的那两个小豆号让我找了不少时间啊!