我创建了一个线程,由于线程里的任务比较多,可能用户等不及了要终止线程,但这时线程还没有结束,所以只能用TerminateThread结束线程,但这样的话,有内存泄露.有什么好办法能阻止内存泄露?望高手指点.

解决方案 »

  1.   

    呵呵,不好意思写错了,应该是在你调用TerminateThread是释放内存。
      

  2.   

    定义一个全局变量
    bool g_bProc;UNIT MyProc(LPVOID pParam)
    {
        g_bProc = true;
        ...
        ...
        g_bProc = false;
        return TRUE;
    }if(g_bProc == true)
    {
        TerminateThread线程;
    }最好定义一个临界值,在g_bProc操作前后Lock和Unlock
      

  3.   

    如果线程还没结束,用户点了停止按钮,按钮里用了TerminateThread终止线程,在终止线程前我把一些new分配的空间都释放了,但还有内存泄露,我看了些资料,说可能是CString引起的.这怎么解决?谢谢
      

  4.   

    内存泄露倒不用担心.
    就怕有些状态的问题.
    比如你是客户端,关闭的时候正和server端交互。你直接TerminateThread会有问题。
    客户关闭的时候,你回收到消息,这时一般应该设置一个标志位,线程里面可以检测这个标志位,然后退出
      

  5.   

    让线程过程函数检测到标志后自己退出。而不是强制退出。另外应该等待所有的线程退出后,调用closehandle。但好像不调用,系统也能把资源释放掉。内存肯定没有问题,一定不会有memory leak,不管你怎么退出的。