程序在主框架窗口中创建了一个无界面Worker线程来while(!bExitFlag){}循环接收来自SOCKET的UDP数据,UDP数据接收函数采用的是阻塞方式接收,因此如果SOCKET没有UDP数据被接收,工作者线程将被总是阻塞在接收函数处,此时即便主窗口线程已经被用户点击了关闭按钮,bExitFlag退出标志被置位为退出,并且Sleep(100);等待工作者线程退出后再退出,工作者线程仍没有机会退出。而Sleep(100);后因为进程被关闭(主窗口线程被关闭),所以工作者线程被非正常释放。
所以:在VS2008的DEBUG输出生成窗口中提示:
etected memory leaks!
Dumping objects ->
f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\thrdcore.cpp(306) : {141} client block at 0x0038F688, subtype c0, 68 bytes long.
a CWinThread object at $0038F688, 68 bytes long
Object dump complete.这种问题怎么处理?
据说进程退出后,它将释放它占用的所有资源,也就意味着即使上述内存泄露提示即便存在,在处理不了或不处理的情况下程序永远也不会因为这个问题而在运行过程中出现错误?可以不必理会该提示?