|
下面是创建线程,和线程函数的代码,每创建一次,则检测一次内存,发现内存会以4K倍数减少。平均创建7,8次会减少4K,或者8K,或者12K。开始以为是线程代码引起的,后面线程里面都没代码了,还是有内存泄露。有谁遇到过同样问题的情解释一下,谢谢
DWORD WINAPI ASyncCyclingPlayPhotosThread(LPVOID lpVoid)
{
return 0;
}
void CVisualIntercomDlg::OnBnClickedBtnGuard()
{
MEMORYSTATUS mem_stat;
DWORD dwThreadID;
BOOL r;
CString memory = L"可用内存";
// 测试
for(int i=0;i<100;i++)
{
HANDLE m_hASyncThreadHandle = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE) ASyncCyclingPlayPhotosThread, (LPVOID)this, 0, &dwThreadID);
WaitForSingleObject(m_hASyncThreadHandle,5000);
if(m_hASyncThreadHandle)
{
r = CloseHandle(m_hASyncThreadHandle);
}
memset(&mem_stat,0,sizeof(MEMORYSTATUS));
mem_stat.dwLength = sizeof(MEMORYSTATUS);
GlobalMemoryStatus(&mem_stat);
CString s;
s.Format(L",%d", mem_stat.dwAvailPhys/1024);
memory += s;
}
|
|