看了一下大家讨论的问题,用AfxBeginThread开启的线程自己可以不用操心释放问题。那如下的起线程方式
 CMyThread类继承了CWinThread类,用如下方式开启线程,m_bAutoDelete变量默认值。     
                CMyThread *pBrdThread = new CMyThread();
pBrdThread->InitInstance();
pBrdThread->CreateThread();
这种方式开启的线程要不要自己delete pBrdThread?

解决方案 »

  1.   

    要的用AfxBeginThread 貌似不用
      

  2.   

    要!
    这个不是一个含义吧.delete pBrdThread;会删除你在堆上申请的内存,然后调用对象的析构函数,在析构函数中,释放线程中的资源.AfxBeginThread线程函数结束后,自己释放线程资源. CMyThread *pBrdThread = new CMyThread(); 已经不是线程资源了,是在进程堆栈申请了一块内存
      

  3.   

    m_bAutoDelete默认被设置为ture了,自动释放new出来的CWinThread对象的。
    MSDN原文如下:
    Specifies whether the CWinThread object should be automatically deleted at thread termination.
      

  4.   

    经过测试,m_bAutoDelete默认被设置为ture了,自动释放new出来的CWinThread对象的,这句话是正确的。CMyThread类继承了CWinThread类,用如下方式开启线程,m_bAutoDelete变量默认值。    
                    CMyThread *pBrdThread = new CMyThread(); 
    pBrdThread->InitInstance(); 
    pBrdThread->CreateThread(); 但现在有个问题,在CMyThread的构造函数中new了一些对象,在析构函数中delete。结果导致程序界面自动退出。这种情况下在构造函数中申请的资源需要自己的析构函数中释放吗?