C++ 用C++;,创建类时,我用0xCDCD获取指针-发生了什么?

C++ 用C++;,创建类时,我用0xCDCD获取指针-发生了什么?,c++,visual-c++,memory,initialization,in-class-initialization,C++,Visual C++,Memory,Initialization,In Class Initialization,----------------编辑----------------------- 我获取了错误的值进行比较,CDCD来自其他地方。我仍然有我的方法在异常到达之前抛出异常,但我的问题在别处,我希望有一种方法可以“取消”我原来的问题。谢谢你的帮助 ----------------编辑----------------------- 我有一个类(MyClass),我从某个第三方类继承而来(该类又从direct show类派生而来——如果这很重要的话,从CBaseFilter派生)。我写这段代码: My

----------------编辑-----------------------

我获取了错误的值进行比较,CDCD来自其他地方。我仍然有我的方法在异常到达之前抛出异常,但我的问题在别处,我希望有一种方法可以“取消”我原来的问题。谢谢你的帮助

----------------编辑-----------------------

我有一个类(MyClass),我从某个第三方类继承而来(该类又从direct show类派生而来——如果这很重要的话,从CBaseFilter派生)。我写这段代码:

MyClass* val = NULL;
val = new MyClass(); // Create an instance of the class.
尝试进行方法调用会导致引发异常。通过一点调查,我发现当我取消引用val时(val本身似乎有效…类似于0x0777fc90),它包含0xCDCD。我环顾四周,这似乎表明内存已在堆上分配,但尚未初始化

那是什么意思?!调用new(val!=NULL)怎么可能成功,而内存的初始化程度还不足以拥有指向它的指针?是否有可能某些基类初始化出了问题?如果是,我在寻找什么?

是否有从DirectShow传递的HRESULT可供检查


尝试调用WINAPI函数,看看会显示什么。

查看
MyClass
的构造函数将是一个开始。您发布的代码很好,可能问题出在代码的其他地方,例如在构造函数中。我不明白我在找什么-构造函数不会引发任何异常。它将一组静态成员初始化为0。@史蒂文:他们要求你发布构造函数及其成员。另外,
静态
成员不应在对象构造函数中初始化,而应仅在非静态成员中初始化。这个初始化发生在什么函数调用上?简而言之:发布你的类。我的代码太琐碎了——我猜问题出在基类的某个地方,但不知道该去哪里找。关于静态成员,你是对的,我说错了,意思是它将成员值设置为0。这是我的构造函数:MyClass::MyClass():CParserFilter(TEXT(“Some Name”,NULL,0){mInitialized=false;}在构造函数之前和之后都调用了GetLastError-没有变化(出于某种原因它是2…但不重要,可能来自其他原因)构造函数中的.HRESULT返回为S_OK。您也可以使用DirectX sdk中的错误查找工具。您确实应该仔细检查
GetLastError()中的内容
可能会告诉您-。如果没有其他信息,我认为任何人都无法进一步帮助您。感谢您的帮助-问题在于Visual Studio在创建某些类时自动使用宏(ATL\u NO\u VTABLE)。删除该宏修复了我的问题。CD也是x86中断指令的操作码。CD CD会触发中断号CD。如果您的代码试图执行此内存块,操作系统会很快捕获它并使其摆脱困境。