我现在自己定一了一个数组,CTypedPtrArray<CObArray,CEisSampleAttriStr*>m_SelSampleAttriArray;
该数组要通过序列化函数保存起来CEisSampleAttriStr为我自己定义的一个类,每次都是通过
CEisSampleAttriStr* str=new CEisSampleAttriStr;
...m_SelSampleAttriArray.Add(str);这样的形式加入数组元素的,请问在什么地方delete str; 
不delete 会不会有内存泄漏向谢谢各位了~~~~~~~~~~~~~~~`

解决方案 »

  1.   

    从m_SelSampleAttriArray删除元素的时候要delete相应元素的指针,add的时候不用的
      

  2.   

    m_SelSampleAttriArray不是类成员吗? 可以在该类析构的时候Del,不然会有内存泄露。
    如果是全局,可以考虑在程序初始化的时候初始化, 在程序退出的时候释放。反正是看它的作用域了。
      

  3.   

    如果m_SelSampleAttriArray是某个类的成员,那么可以在此类的析构函数中删除str,如果重复向此数组中添加一组元素,则在每次添加前要删除str。class CA
    {
    protected:
      CTypedPtrArray<CObArray,CEisSampleAttriStr*> m_SelSampleAttriArray;  void Clear()
      {
         for(int i = 0; i < m_SelSampleAttriArray.GetSize(); i++)
         {
    delete m_SelSampleAttriArray[i];
         }
      }  virtual ~CA()
      {
         Clear();
      }
    }
      

  4.   

    难道放在CEisSampleAttriStr这个类的析构函数里不行吗