本帖最后由 flightboy1109 于 2009-10-10 20:43:25 编辑

解决方案 »

  1.   


    if(bFineImgInf)
    {
        pCurImage = new ImageStatus;
        //ASSERT(pCurImage!=NULL);
        pCurImage->lbusino = xml.GetChildAttrib("Busino");
        pCurBatch->imagestatus = pCurImage;
        delete pCurImage;
    pCurBatch->imagestatus = NULL;
    pCurImage=NULL;
    }
      

  2.   

    if(bFineImgInf)
    {
        pCurImage = new ImageStatus;
        //ASSERT(pCurImage!=NULL);
        pCurImage->lbusino = xml.GetChildAttrib("Busino");
        pCurBatch->imagestatus = pCurImage;
        delete pCurImage;
    pCurBatch->imagestatus = NULL;  //这样好像不行哦
    pCurImage=NULL;
    }
    朋友帮帮忙!!
      

  3.   

    你看看就知道了嘛
    按F5,在调试状态下运行,程序退出后在“输出窗口”可以看到有无内存泄露出现,例如:
    Detected memory leaks! 
    Dumping objects -> 
    C:PROGRAM FILESVISUAL STUDIOMyProjectsleaktestleaktest.cpp(20) : {18} normal block at 0x00780E80, 64 bytes long. 
    Data: < > CD CD CD CD CD CD CD CD CD CD CD CD CD CD CD CD 
    Object dump complete. 
      

  4.   

    我While循环里面的改成如下
    while (bFineImgInf && nTotal>1)
    {
        pNextImage = new ImageStatus;
        ASSERT(pNextImage!=NULL);
        pNextImage->lbusino = atoi(xml.GetChildAttrib("Busino"));
        pCurImage->next = pNextImage;
        pCurImage = pCurImage->next;
        pCurImage = NULL;
        delete pNextImage;
        pNextImage = NULL;
    }
      

  5.   

    if(bFineImgInf)
    {
        pCurImage = new ImageStatus;
        ASSERT(pCurImage!=NULL);
        pCurImage->next=NULL;            <-----
        pCurImage->lbusino = xml.GetChildAttrib("Busino");
        pCurBatch->imagestatus = pCurImage;
        //delete pCurImage;                 <--------------这里delete了后面怎么用pCurBatch->imagestatus?,要去掉
    }while (bFineImgInf && nTotal>1)
    {
        pNextImage = new ImageStatus;
        ASSERT(pNextImage!=NULL);
        pNextImage->next=NULL;
        pNextImage->lbusino = atoi(xml.GetChildAttrib("Busino"));
        pCurImage->next = pNextImage;
        pCurImage = pCurImage->next;
        //pCurImage->next = NULL;   <------去掉
        nTotal--;
        //delete pNextImage;          <------去掉
    }//delete的时候要先把image_struct里面的删掉
    pCurImage=pCurBatch->imagestatus;
    While(pCurImage!=NULL)
    {
    .........
    pNextImage=pcurimage->next;
    delete pCurImage;
    pcurimage=pNextimage;
    .........
    }
    //.....
    delete pCurBatch;
      

  6.   

    一看这代码就知道这是一个C程序员用C++代码写的C程序
      

  7.   

    while (bFineImgInf && nTotal>1)
    {
        pNextImage = new ImageStatus;
        ASSERT(pNextImage!=NULL);
        pNextImage->lbusino = atoi(xml.GetChildAttrib("Busino"));
        pCurImage->next = pNextImage;
        pCurImage = pCurImage->next;
        pCurImage->next = NULL;
        nTotal--;
        //delete pNextImage;
    }既然是创建链表,那么就不应该new了就delelte释放,而是由一个专门的release函数等,当需要确实需要释放链表的时候,遍历链表,然后delete每一个元素..
      

  8.   

    pCurBatch->imagestatus = pCurImage;  我加了这句话就不行