在MFC库 OBJCORE.cpp文件中:
BOOL CObject::IsKindOf(const CRuntimeClass* pClass) const
{
ASSERT(this != NULL);
// it better be in valid memory, at least for CObject size
ASSERT(AfxIsValidAddress(this, sizeof(CObject))); // simple SI case
CRuntimeClass* pClassThis = GetRuntimeClass();
return pClassThis->IsDerivedFrom(pClass);
}
程序运行后在该函数中的CRuntimeClass* pClassThis = GetRuntimeClass();处崩溃,请问这种崩溃是如何引起的如何解决?

解决方案 »

  1.   

    大概该类不支持动态识别或动态创建。
    DECLARE_DYNCREATE(....)
    IMPLEMENT_DYNCREATE(....)
      

  2.   

    This function requires use of the IMPLEMENT_DYNAMIC or IMPLEMENT_SERIAL macro in the class implementation
      

  3.   

    是不是强转化为CObject派生类的导致的?
      

  4.   

    我这边就是因为调用了一个释放过的CObject的指针,而导致的内存错误^_^调试的时候也是指示的一样
      

  5.   

    IMPLEMENT_DYNAMIC与IMPLEMENT_DYNCREATE是两个层次上的宏,IMPLEMENT_DYNAMIC用来是程序具有运行时能的动态获取程序中使用的类的信息,IMPLEMENT_DYNCREATE宏就是在IMPLEMENT_DYNAMIC的基础之上加入了动态创建类的功能,IMPLEMENT_DYNCREATE与IMPLEMENT_DYNAMIC配对在编译时不会报错,但会使程序失去动态创建类的能力。