函数形式如下TYPE* Fun(TYPE* p1,TYPE* p2)
{
   TYPE* p = new TYPE[p1.size + p2.size];
   //do..
   return p;
}函数过程是把p1和p2指向的数据进行处理,放到new出来的p里面,然后返回。
外部需要使用返回的p;
不过这样的话,随着函数调用次数的增加,一次次的new新的内存,却没有释放,造成资源的浪费,时间越久浪费越大。有没有办法把p的内存给释放掉?
活着有没有更好的办法使用函数处理的结果?

解决方案 »

  1.   

    TYPE pData;pData = Fun (...);
    ... //使用返回的数据
    delete [] pData; // 在不再需要的时候 delete
      

  2.   


    C++ 中
    new 和 delete 必须配套使用。
    new 返回一个指针,不使用时,用 delete 释放这个指针即可。
      

  3.   

    new和delete 成对 没有要求说在一个函数中的,其实 只要在一个进程中就可以了因为堆内存是进程内共享
      

  4.   

    我是这样做的//.h中
    CArray<LISTCOMBOBOX*, LISTCOMBOBOX* > m_pListComboBox;//.cpp中
    void CXXXXXX::SetComboBox(int iColumn, int iRow)
    {
       LISTCOMBOBOX  *pListComboBox = new LISTCOMBOBOX;
       ...
       ...
       m_pListComboBox.Add(pListComboBox);//保存在数组中,在析构函数中deleteCXXXXXX::~CXXXXXX()
    {
    //在此delete
    for(int i = 0; i < m_pListComboBox.GetSize(); i++)
    {
    delete m_pListComboBox[i];
    m_pListComboBox[i] = NULL;
    }
    }
      

  5.   

    delete理论上在哪个位置都可以!不一定在析构函数,在适当的位置使用delete p;
      

  6.   

    多看看C++中关于内存管理的,一般new内存都是堆内存,肯定要释放,否则会浪费资源的啊,一般都会在new后面相应的跟随delete语句