我在程序中使用了树控件,自然就用到了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); 实在是不知为何,望回答。
道是什么原因。望高手解惑!!急!!! 而且每次只漏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); 实在是不知为何,望回答。
是不是在什么地方忘了delete了!
delete数组的时候要用delete[] 你要delete的指针!祝你早日解决问题!
===>
memset(hIcon,0,sizeof(HICON));
按你的声明。
hIcon存放了3个ICON,也就是 3个long的长度。12个byte。哈哈,查内存泄漏,我在行阿!
===>
memset(hIcon,0,sizeof(HICON));
按你的声明。
hIcon存放了3个ICON,也就是 3个long的长度。12个byte。哈哈,查内存泄漏,我在行阿!