我用CWinThread *pThread,开始一个线程。到程序关闭时要不要删除它啊?
我是这样做的:
::WaitForSingleObject(pThread->m_hThread, INFINITE);
delete pThread;
为什么会出错?错在最后一句话。请问错在什么地方,难道不应该删除这个线程吗?
我是这样做的:
::WaitForSingleObject(pThread->m_hThread, INFINITE);
delete pThread;
为什么会出错?错在最后一句话。请问错在什么地方,难道不应该删除这个线程吗?
解决方案 »
- 请问CTabView如何实现关闭view的功能?
- 类模板参数的问题,模板中只有一个数据成员,实际用到的时候需要两个数据成员的时候怎么办?
- 寻求方案
- 读一个二进制文件,并且是每4个字节组合在一起作为16进制形式
- 头晕啊,这个控制应该如何实现切换自如?
- 如何在程序中判断当前编译选项是static library 还是shaed dll ?
- 如何在ListBox中改变某一行字体的颜色,而不是整体改变?
- 谁能提供一个listview的例子?
- 程序里如何实现与需要登录的HTTP PAGE通讯????有关session的处理!
- socket聊天程序在xp32位上运行没问题但是在win7 64位上显示connect error 怎么办
- picture控件问题
- 怎样在状态栏上添加CEdit控件??????
不懂,请把问题描述清楚--而且,LZ所说的释放,如果是默认为自动释放的话,在程序关闭的时候应该是由系统在销毁*pThread指针的时候释放掉资源的啊
你在说什么啊,我还是看不懂啊-_-!!-_-!!我的表达能力有问题?1.以CREATE_SUSPENDED调用AfxBeginThread,返回一个CWinThread对象,该对象内的线程被挂起
2.设置CWinThread对象的m_bAutoDelete字段为false(默认为true的)
3.调用CWinThread对象的ResumeThread方法,恢复线程执行
4.等待线程执行完毕,就是lz的WaitForSingleObject(pThread->m_hThread, INFINITE);
5.delete pThread如果m_bAutoDelete为true,就不应该delete pThread,这是因为当m_bAutoDelete为true时,线程执行完毕后,线程对应的CWinThread对象会自动释放。如果你对已释放的CWinThread对象的指针再次delete,就会发生非法访问。
初步估计,lz就是犯上述错误