case DSTRING:
{
if(0!= pItem->Value()->Valid())
         {
       DDataString *pBuf = dynamic_cast<DDataString*>(&*pItem->Value());
       if (pBuf != NULL)
       {
         int bufLength = pBuf->Length();
         const char* pContents = pBuf->Contents();
         unsigned char * pAofString = new unsigned char[bufLength];
         pAofItem->value.pString = pAofString;          memcpy(pAofString,pContents, sizeof(int)*bufLength);
pAofItem->length = bufLength;
         pAofItem->bValid = true;
        }
}
}
break;
软件跑个2天内存会增加很多,这段code将会不断的被调用,但是并没有delete的地方.我想问问是不是这段是不是会引起内存泄露?

解决方案 »

  1.   

    会泄漏,分配了没释放。pAofString 用来做什么的呢?分配了内存,也没有用。而且每循环一次,分配的空间还无法释放了。
      

  2.   

    那每次是不是应该在break后
    delete pAofString;
    pAofString = FULL;
      

  3.   

    发现delete[] pAofString后,程序跑了后会出问题!是不是在switch语句里new了后可以不要delete
      

  4.   

    不可以,用完了就要释放。至于delete[]之后出问题,要结合程序上下文来看,要解决内存泄漏不释放内存是不行的。