MFC:阻止线程删除指向其 ControllingFunction 的输入指针

MFC: Stop a thread from deleting the input pointer to its ControllingFunction

本文关键字:ControllingFunction 输入 指针 线程 删除 MFC      更新时间:2023-10-16

>我有一个线程定义为:

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* 。并且没有调用析构函数。你的问题一定是由其他原因引起的。

相关文章:
  • 没有找到相关文章