AfxEndThread使用不规范导致内存泄露

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_35097289/article/details/89021470

前言: 最近项目出现了个比较严重的memory leak问题, 因为代码有很久的历史,之前也一直没有发现。最后跟踪定位发现可能是AfxEndThread结束线程导致的。

修改了线程结束方式后,问题就解决了。

案例:
UINT WorkingProc(LPVOID pParam)
{
    CString strFolderPath = _T("...");
    AfxEndThread(0);
    return 0;
}
WorkingProc为线程函数,AfxEndThread函数执行后线程直接结束,不会调用strFolderPath的析构函数,导致内存泄露!

所以AfxEndThread不是安全的线程结束方法。

原文参考:https://blog.csdn.net/racebug2010/article/details/7433414

附上曾经总结的:https://blog.csdn.net/qq_35097289/article/details/80240702

猜你喜欢

转载自blog.csdn.net/qq_35097289/article/details/89021470