MFC:阻止线程删除指向其 ControllingFunction 的输入指针
MFC: Stop a thread from deleting the input pointer to its ControllingFunction
>我有一个线程定义为:
m_DoIt_Thread=AfxBeginThread(DoIt_ThreadProc, (LPVOID)this, 0, 0, CREATE_SUSPENDED);
DoIt_ThreadProcm定义为:
UINT CMyClass ::DoIt_ThreadProc(LPVOID pData)
{
CMyClass * self = (CMyClass *)pData;
self->DoIt();
return 0;
}
显然,pData 在线程完成后被销毁。有没有办法阻止它,以免指针被破坏?我们可以定义/覆盖 MFC 线程的析构函数吗?
这与我之前的问题有所不同。我也认为与这个论坛帖子也有联系。
线程
完成时不会销毁pData
。线程函数将其视为指向 void 的指针,您可以将其转换为将数据传递给线程所需的任何内容。但是线程不会对pData
指向的内存或此内存中的对象执行任何操作。
实际上它唯一能做的就是释放内存(用delete
(,但这假设内存是用new
分配的,这个假设可能是错误的。幸运的是,MFC 没有做出此假设,也不会释放内存。
析构函数调用是完全不可能的,因为没有pData
指向的对象的信息 - 它是void*
。并且没有调用析构函数。你的问题一定是由其他原因引起的。
相关文章:
- 没有找到相关文章