释放类成员指针指向的内存与释放类对象内存的先后有关问题

释放类成员指针指向的内存与释放类对象内存的先后问题。
class T
{
  private:
    char * str;
    int len;
    
  pulic:
    ....;
    ~T();
};
T::T(const T & st)  //复制构造函数
{
   len=st.len;
   str=new char[len+1];
   std::strcpy(str,st.str);
}
给定一个已经初始化的类对象S;
T * favor=new T(S);
delete favor;
当delete对象时,这里释放的是保存str的指针和len成员的空间,并不释放str指向的内存。
那究竟是先释放掉S的内存还是先释放str指向的内存呢。

内存

------解决方案--------------------
引用:
Quote: 引用:

Quote: 引用:

Quote: 引用:

当然要先释放成员了,事实上,这个可以在释构函数里释放成员

必须要显式的在析构函数里面声明delete [] str吗?
我刚试了一下,没有显式的声明的话,程序也能编译。


先成员,再对象啊! 你不delete 肯定能过啊!但是有内存泄露的

所以先释放str指向的内存,然后在释放类对象?
你的意思是说 像new创建新空间的话必须显式的用delete释放空间?


为了避免内存泄漏,必须显示delete!在那里delete就看你new出来的需要的生命周期而定拉