哪位能帮个忙,看看下面的C++程序

来源:百度知道 编辑:UC知道 时间:2024/05/08 08:43:00
#include<iostream.h>
class A{
public:
char* ch;
};
class operate{
private:
A* ptr;
public:
void input(){
ptr=new A;
ptr->ch=new char;
cout<<"请输入一个字符:";
cin>>ptr->ch;
cout<<"刚才的字符是:"
cout<<ptr->ch;
}
~operate(){
delete ptr;
}
};
void main(){
operate a;
a.input();
cout<<endl;
}

在operate的析构函数中,如果释放掉了ptr,是不是也就释放掉了 ptr->ch=new char;所申请的空间

不是,类A里面的ch为一个字符串指针,大小只是指针的大小,类A的指针ptr释放掉了,只是释放了类A空间,由于类指针了类里面的成员指针指向不同的地方,因此没有释放ch申请的空间。可以在类A里面写一个析构函数来释放ch指向的空间。

一般的编译器都会帮你回收的,但最好还是自己手动回收好!