内存泄漏,请帮忙看看问题出在哪里?

magicdu 2007-07-09 08:48:08
void CRS2USBDlg::OnTimer(UINT nIDEvent)
{
// TODO: Add your message handler code here and/or call default

HKEY hKey = HKEY_LOCAL_MACHINE;
DWORD numSubKey = 0;
DWORD i;
DWORD sizeSubKey;
TCHAR subKey[255];
TCHAR szValue[MAX_REG_LENGTH];

unsigned char keyValue[255];
DWORD dwType = REG_SZ;
DWORD cbData = MAX_REG_LENGTH;

int iVNSCounter = 0;

memset(keyValue, 0, 255);


switch(nIDEvent)
{
case TIMER_USB_STATUS:

// Operation registry to get info



RegOpenKeyEx(g_HKEY,
L"Drivers\\Active",
0,
KEY_READ,
&hKey);


RegQueryInfoKey(hKey,
NULL,
NULL,
NULL,
&numSubKey,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL);

if(numSubKey)
{
for(i=0; i<numSubKey; i++)
{
subKey[0] = '\0';
sizeSubKey = 255;

RegEnumKeyEx(hKey,
i,
subKey,
&sizeSubKey,
NULL,
NULL,
NULL,
NULL);


memset(szValue, 0, sizeof(szValue));
wcscpy(szValue, L"Drivers\\Active\\");
wcscat(szValue, subKey);

if(RegOpenKeyEx(g_HKEY, szValue, 0, KEY_READ, &hKey)==ERROR_SUCCESS)
{

if(RegQueryValueEx(hKey, TEXT("Key"), NULL, &dwType, keyValue, &cbData)==ERROR_SUCCESS)
{

SetDlgItemText(IDC_STATIC_TEMP, (LPCTSTR)keyValue);

CString sTmp;
GetDlgItemText(IDC_STATIC_TEMP, sTmp);

CString s1("Drivers\\USB\\ClientDrivers\\Venus_USB");
if(sTmp.Compare(s1)==0)
{
iVNSCounter++;
}
}

}

}
}

break;
default:
break;
}
...全文
221 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
gamezealot 2007-07-11
  • 打赏
  • 举报
回复
代码发给我 我帮你改,ryotyankou@163.com!
gamezealot 2007-07-09
  • 打赏
  • 举报
回复
貌似你没调用RegCloseKey关闭注册表句柄,当然内存泄漏了!
magicdu 2007-07-09
  • 打赏
  • 举报
回复
我加了RegCloseKey,好像还是有内存泄漏,不知道还有没有其它的发现,谢谢

19,502

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 嵌入开发(WinCE)
社区管理员
  • 嵌入开发(WinCE)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧