看了一下大家讨论的问题,用AfxBeginThread开启的线程自己可以不用操心释放问题。那如下的起线程方式
CMyThread类继承了CWinThread类,用如下方式开启线程,m_bAutoDelete变量默认值。
CMyThread *pBrdThread = new CMyThread();
pBrdThread->InitInstance();
pBrdThread->CreateThread();
这种方式开启的线程要不要自己delete pBrdThread?
CMyThread类继承了CWinThread类,用如下方式开启线程,m_bAutoDelete变量默认值。
CMyThread *pBrdThread = new CMyThread();
pBrdThread->InitInstance();
pBrdThread->CreateThread();
这种方式开启的线程要不要自己delete pBrdThread?
这个不是一个含义吧.delete pBrdThread;会删除你在堆上申请的内存,然后调用对象的析构函数,在析构函数中,释放线程中的资源.AfxBeginThread线程函数结束后,自己释放线程资源. CMyThread *pBrdThread = new CMyThread(); 已经不是线程资源了,是在进程堆栈申请了一块内存
MSDN原文如下:
Specifies whether the CWinThread object should be automatically deleted at thread termination.
CMyThread *pBrdThread = new CMyThread();
pBrdThread->InitInstance();
pBrdThread->CreateThread(); 但现在有个问题,在CMyThread的构造函数中new了一些对象,在析构函数中delete。结果导致程序界面自动退出。这种情况下在构造函数中申请的资源需要自己的析构函数中释放吗?