CList<int, int>* m_cList = new CList<int, int>[NoteNumber]; 这是我new的一组CList,其中NoteNumber是大于2的;这个CList数组是用来存放无向图的的邻接表,用来检测这个无向图的连通性,可以正确的检测出图的连通性;现在要释放这个CList数组总是出错我用的是delete m_cList  Debug版本下运行到这里就出错这个CList数组应该怎样正确地释放?

解决方案 »

  1.   

    试验了下 
    for (i=0; i<NoteNumber; i++)
    {
    m_cList[i].RemoveAll();
    } delete m_cList;这样释放还是出错~~~
      

  2.   

    在delete m_cList 之前没有对这个CList数组 做啥操作的话, delete m_cList  是可以的
       
    可是对这个CList数组加入元素的话,就会又问题int i;
    for (i=0; i <NoteNumber; i++) 

        m_cList[i].AddTail(i); 
    } 则 delete m_cList 报错
      

  3.   

    报错不确定,确定的是这儿内存释放不完全。
    应该是 delete[] m_cList ;
      

  4.   

    测试通过 给分  这个模板类释放还得delete[] m_cList 
     一般我double* m_cMy = new double[NoteNumber]; 直接delete m_cMy  就可以并不需要delete []m_cMy是不是这样写delete m_cMy  不规范,最好写成 delete []m_cMy
      

  5.   

    》》一般我double* m_cMy = new double[NoteNumber]; 
    》》是不是这样写delete m_cMy  不规范,最好写成 delete []m_cMy是的。只不过基础类型没有析构函数,写成delete和delete[]没有区别。 如果是类的话,delete和delete[]就区别很大了。delete[]能保证每一个析构函数都被调用;
    delete 就认为只有一个对象,因此只有第一个对象的析构函数被调用。