怎么样终止线程才能不内存泄露? 我创建了一个线程,由于线程里的任务比较多,可能用户等不及了要终止线程,但这时线程还没有结束,所以只能用TerminateThread结束线程,但这样的话,有内存泄露.有什么好办法能阻止内存泄露?望高手指点. 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 呵呵,不好意思写错了,应该是在你调用TerminateThread是释放内存。 定义一个全局变量bool g_bProc;UNIT MyProc(LPVOID pParam){ g_bProc = true; ... ... g_bProc = false; return TRUE;}if(g_bProc == true){ TerminateThread线程;}最好定义一个临界值,在g_bProc操作前后Lock和Unlock 如果线程还没结束,用户点了停止按钮,按钮里用了TerminateThread终止线程,在终止线程前我把一些new分配的空间都释放了,但还有内存泄露,我看了些资料,说可能是CString引起的.这怎么解决?谢谢 内存泄露倒不用担心.就怕有些状态的问题.比如你是客户端,关闭的时候正和server端交互。你直接TerminateThread会有问题。客户关闭的时候,你回收到消息,这时一般应该设置一个标志位,线程里面可以检测这个标志位,然后退出 让线程过程函数检测到标志后自己退出。而不是强制退出。另外应该等待所有的线程退出后,调用closehandle。但好像不调用,系统也能把资源释放掉。内存肯定没有问题,一定不会有memory leak,不管你怎么退出的。 VC 可以用.net 的东西吗?? CComboBox CListCtrl的问题 求指教.... 《深入浅出MFC》中的编译连接问题! 急,如何用串口接收发送文件? 夜半传来call bed 声 请问把一个对话框中的内容如何保存在另一个对话框中的列表控件中?? vc技术内幕的问题 请问哪里可以下载到微软msdn的例程啊? 如何使CEdit一直定位在最后一行 不出现来回滚动 SQL时间字段更新问题 请问个CTabCtrl选项的小问题??
bool g_bProc;UNIT MyProc(LPVOID pParam)
{
g_bProc = true;
...
...
g_bProc = false;
return TRUE;
}if(g_bProc == true)
{
TerminateThread线程;
}最好定义一个临界值,在g_bProc操作前后Lock和Unlock
就怕有些状态的问题.
比如你是客户端,关闭的时候正和server端交互。你直接TerminateThread会有问题。
客户关闭的时候,你回收到消息,这时一般应该设置一个标志位,线程里面可以检测这个标志位,然后退出