如下这段代码示例,如何释放new所分配的空间.typedef struct _ModuleInfo{
    CString ModuleName;
    CString ModuleSerial;
}ModuleInfo, *pModuleInfo;CPtrArray m_ptrCellInfo; //成员对象pModuleInfo moduleinfo = new ModuleInfo[10];m_ptrCellInfo.Add(moduleinfo);((pModuleInfo)m_ptrCellInfo.GetAt(0))->ModuleName = "ModuleName";
((pModuleInfo)m_ptrCellInfo.GetAt(0))->ModuleSerial = "Serial00001";最后不用了,想释放这个new分配的空间如何做?

解决方案 »

  1.   

    不管new什么对象,一律
    delete ptr;
      

  2.   

    new申请的空间用delete释放,具体操作你还是看看书吧,这里将不清楚。或者看看这里http://www.diybl.com/course/3_program/c++/cppsl/200861/118758.html
      

  3.   

    服了,
    new对应delete
    new []对应delete[]。虽然如果是非自定义类型,new[]对应delete也不会出错,不过最好别这样。http://www.chinaunix.net/jh/23/311058.html
      

  4.   


       pModuleInfo moduleinfo = (pModuleInfo)m_ptrCellInfo.GetAt(0);
       delete [] pModuleInfo;
      

  5.   

    new 数组的话,肯定delete[] ptr了,不然只释放了第一个元素,其余的都没有释放
    看看 C++的书
      

  6.   

            m_ptrCellInfo.RemoveAll()
    delete[] moduleinfo;
      

  7.   

    先将数组清空,后释放内存Ghost90的做法是正解
      

  8.   

    先要用getsize()判断一下m_ptrCellInfo这个里面包含了多少个元素,让后在
    执行:
       pModuleInfo moduleinfo = (pModuleInfo)m_ptrCellInfo.GetAt(i);(i是你要删除的那个元素)
       delete [] pModuleInfo;
      

  9.   

    new的对象是
    delete []ModuleInfo; 
    但CPtrArray 删除有它的机制啊
      

  10.   

    应该这样:   for(int j=0; j<m_ptrCellInfo.GetSize();j++)
    {
    pModuleInfo pmodinf = (pModuleInfo)m_ptrCellInfo.GetAt(j);
    ASSERT(pmodinf);
    delete pmodinf;
    }
       m_ptrCellInfo.RemoveAll();希望来到这个论论的,在参与帖子的回复时要确定你讲的是对的,最好自行演练一下,回复的结果要具体,明确,详细一点.
      

  11.   

    Mark20060606, 好样的。你讲得太好了,真希望来到这个论坛的都认真点。不仅仅为了那点分.