我在程序中这样做
CArray<CExFlytimeTable*,CExFlytimeTable*> m_ExFlytimeTableArray;
m_ExFlytimeTableArray为一个类的变量for(int i=0;i<nExpectFlyTimeSetCount;i++)
{
CExFlytimeTable* ExFlytimeTableTemp=new CExFlytimeTable();
..........
...........
m_ExFlytimeTableArray.Add(ExFlytimeTableTemp);
}
我这样的话,显然是没有释放又new所分配的内存,如果一直运行上面的代码的话,肯定会对系统资源影响很大。
我应该怎样做才能释放资源呢?
请高手指点一下

解决方案 »

  1.   

    for(int i=0;i<nExpectFlyTimeSetCount;i++)
    {
      delete m_ExFlytimeTableArray[i];
    }m_ExFlytimeTableArray.RemoveAll();
      

  2.   

    你为CExFlytimeTable分配内存的时机很失败,其实它仅起到一个临时变量的作用,象下面这样一次循环下去只需要申请一块内存,用完释放;
    CExFlytimeTable * ExFlytimeTableTemp = new CExFlytimeTable();
    for(int i = 0;i < nExpectFlyTimeSetCount;i++)
    {
        ...........
        m_ExFlytimeTableArray.Add(ExFlytimeTableTemp);
    }
    delete []CExFlytimeTable;
      

  3.   

    上面的大侠,按你那样做的话,不行的,我得不到m_ExFlytimeTableArray数组里的值
      

  4.   

    SystemAdministrator(没齿骆驼) 可能有点误解楼主的意思。如果按照你这样做,那么每次在数组里增加的都是同一个ExFlytimeTableTemp 。那有什么意义呢。
    在每次new一个ExFlytimeTableTemp出来后,他应该是做不同的事情的。比如,他也是一个数组的指针,他应该存一些特定的数据。
      

  5.   

    上面的大侠,你说得对。
    可是我现在的问题是,我要连续执行下面的程序,比如连续按某个按钮
    for(int i=0;i<nExpectFlyTimeSetCount;i++)
    {
    CExFlytimeTable* ExFlytimeTableTemp=new CExFlytimeTable();
    ..........
    ...........
    m_ExFlytimeTableArray.Add(ExFlytimeTableTemp);
    }
    如果是这样的话,那么不是NEW了很多个CExFlytimeTable吗?
    那么我应该怎样来释放这些资源呢?
    请高手指点一下,拜托了.
      

  6.   

    问题太模糊。
    简单点说就是需要时申请空间,并记录指针(存储指针值)。
    不需要时释放空间,并销毁指针(NULL)。
    具体起来谁也帮不了你,说得太模糊。
    》》可是我现在的问题是,我要连续执行下面的程序,比如连续按某个按钮
    《〈再加一个释放按钮,加入以上大侠程序,你的思维比较混乱。(不知道你是什么意思)。