如下实现,用CString时,是肯定会造成内存泄露:
DWORD __stdcall ThreadProc(LPVOID pContext)
{
CString strTest = "abcd";
MessageBox(strTest);
......
ExitThread(0);
return NULL;
}
按说一般局部变量是分配在stack上的,不会内存泄漏;
但是这个Cstring类型的变量就特殊了,“该管理器从进程堆(在 ATL 中)或 CRT 堆(在 MFC 中)分配内存。”既然分配在堆上,那就要回收。默认是到了该变量生存期结束的时候有管理器回收,但是如果你强行 ExitThread(0); 或者exit(0),让该线程“不得好死”,自然就内存泄漏……
没有评论:
发表评论