为什么我在析构函数里删了pBitmapInfo,结果还是说内存泄露呢?泄露那里说泄露的是这句BitmapInfo* temp = new BitmapInfo[bitmapnum+1];
下面的是代码:
BitmapInfo* e;
BitmapInfo* temp = new BitmapInfo[bitmapnum+1];
for(int i = 0;i<bitmapnum;i++)
{
temp[i].fathername = pBitmapInfo[i].fathername;
temp[i].nodename = pBitmapInfo[i].nodename;
temp[i].level = pBitmapInfo[i].level;
temp[i].pointx = pBitmapInfo[i].pointx;
temp[i].pointy = pBitmapInfo[i].pointy;
temp[i].gfathername = pBitmapInfo[i].gfathername;
}
int x = bitmapnum*60+100;
int y = 100;
for(i = 1;i<4;i++)
{
if(x>i*600)
{
x = x-i*540;
y = i*200;
}
}
e = pBitmapInfo;
pBitmapInfo = temp;
delete [] e;
pBitmapInfo[bitmapnum].fathername = tmpfathername;
pBitmapInfo[bitmapnum].nodename = tmpnodename;
pBitmapInfo[bitmapnum].level = tmplevel;
pBitmapInfo[bitmapnum].pointx = x;
pBitmapInfo[bitmapnum].pointy = y;
pBitmapInfo[bitmapnum].gfathername = tmpgfathername;
bitmapnum++;
小弟谢过。

解决方案 »

  1.   

    哪里有你的delete []temp;语句?
      

  2.   

    有啊,我go完了他写了一大堆泄露,我双击一个他就带我到BitmapInfo* temp = new BitmapInfo[bitmapnum+1];这句了。而且不是一个,是好多。
      

  3.   

    我把temp负给pBitmapInfo了,然后再析构函数里把pBitmapInfo删了。
      

  4.   

    如果你多次调用这段代码,每次都new一个指针,当然会造成内存泄漏。
      

  5.   

    CUserInfoDoc::~CUserInfoDoc()
    {
    delete [] pUserInfo;
    delete [] pBitmapInfo;
    }
      

  6.   

    如果这个类关于new的地方使用一次的话,那析构的时候delete是ok的,如果new是反复调用的话,那只有在析构的时候delete的话,除了最后一次new的,以前的都是泄漏的,可以增加一个判断。if(NULL != temp)
    {
       delete [] temp;
       temp = NULL;
    }temp = new BitmapInfo[bitmapnum+1];
      

  7.   

    不行,我这样写,
    UserInfo* d;
    UserInfo* tmp;
    if(NULL != tmp)
    {
    delete [] tmp;
    tmp = NULL;
    }
    tmp = new UserInfo[nodenum+1];
    结果Debug的时候delete [] tmp过不去。
    怎么办,有没有好办法啊大哥 们。
      

  8.   

    最基本的问题,tmp没有赋初值。
      

  9.   

    new与delete 一一对应   这样就OK