我在程序中使用了树控件,自然就用到了CImageList,可是调试发现总有内存泄漏,不知 
道是什么原因。望高手解惑!!急!!! 而且每次只漏8字节,泄漏信息如下: 
winctrl2.cpp(765) : {1925} client block at 0x00BF8860, subtype 0, 8 bytes long 

a CImageList object at $00BF8860, 8 bytes long 我使用过程如下: 
      对话框头文件里声明了一个成员变量:CImageList m_imageList; 
      OnInitDialog()函数里Create并关联之: 
    HICON hIcon[3]; 
    memset(hIcon,0,sizeof(hIcon)); 
    int n; 
    m_imageList.Create(16,16,0,0,3);     hIcon[0]=AfxGetApp()->LoadIcon(IDI_PROJECT_ICON); 
    hIcon[1]=AfxGetApp()->LoadIcon(IDI_FONT_ICON); 
    hIcon[2]=AfxGetApp()->LoadIcon(IDI_GRAPH_ICON); 
    for (n=0;n<3;n++) 
    { 
        m_imageList.Add(hIcon[n]); 
    }     m_Tree.SetImageList(&m_imageList,TVSIL_NORMAL); 发现泄漏后又在DestroyWindow()里边加入如下代码仍然泄漏: 
    m_Tree.SetImageList(NULL,TVSIL_NORMAL);      for (int i=0;i < m_imageList.GetImageCount();i++) 
    { 
       m_imageList.Remove(i); 
       tempInt = m_imageList.GetImageCount(); 
    }     m_imageList.DeleteImageList(); 
    ASSERT(m_imageList.GetSafeHandle() == NULL); 实在是不知为何,望回答。 

解决方案 »

  1.   

    可我整个程序里边也就这个地方与用到了CImageList,如果不是这里,那还有什么情况会导致这种内存泄漏?
      

  2.   

    你有没有用new的地方!
    是不是在什么地方忘了delete了!
    delete数组的时候要用delete[] 你要delete的指针!祝你早日解决问题!
      

  3.   

    memset(hIcon,0,sizeof(hIcon)); 
    ===>
    memset(hIcon,0,sizeof(HICON)); 
    按你的声明。
    hIcon存放了3个ICON,也就是 3个long的长度。12个byte。哈哈,查内存泄漏,我在行阿!
      

  4.   

    memset(hIcon,0,sizeof(hIcon)); 
    ===>
    memset(hIcon,0,sizeof(HICON)); 
    按你的声明。
    hIcon存放了3个ICON,也就是 3个long的长度。12个byte。哈哈,查内存泄漏,我在行阿!