使用__hook和__unhook与多个继承的mfc类时内存泄漏

时间:2014-11-06 19:29:16

标签: c++ events mfc hook multiple-inheritance

在我的MFC Dialog类中,我使用__hook__unhook为我的一个对象的事件注册一个处理程序。

对话类:

// Header 
class CMyDlg : public CDialogEx, public CEffectController
{
public:
   CMyDlg(CWnd* pParent = NULL);
   enum { IDD = IDD_MY_DIALOG };
protected:
   CEffect m_effect;
   virtual BOOL OnInitDialog();
   afx_msg void OnDestroy();

private:
   void OnEffectReady();
   . . .
};

// CPP
BOOL CMyDlg::OnInitDialog
{
   CDialogEx::OnInitDialg();
   __hook(&Effect::effectReady, &m_effect, &CMyDlg::OnEffectReady);
   return TRUE;
}

void CMyDlg::OnDestroy
{
   __unhook(&Effect::effectReady, &m_effect, &CMyDlg::OnEffectReady);
   CDialogEx::OnDestroy();
}

父类:

class CEffectController
{
public:
   CEffectController();
   virtual ~CEffectController();
};

对象类:

class CEffect
{
public:
   CEffect();
   ~CEffect();

   __event void effectReady();
};

问题在于,无论何时我继承CEffectController OR ,请使用__hook__unhook我得到以下调试器输出:

Detected memory leaks!
Dumping objects ->
{352} normal block at 0x013E35E0, 24 bytes long.
 Data: <p               > 70 A6 C2 00 00 00 00 00 10 F7 0F 01 CD CD CD CD 
Object dump complete.

继承CEffectController 使用__hook__unhook修复此问题。

我想在__hook中使用函数指针会导致我的类的某些部分再次被__unhook取消挂钩的问题。 有没有人遇到这样的问题,或者知道可能的解决方案或解决方法吗?

注意:所有函数,构造函数,析构函数都被调用!

0 个答案:

没有答案