----------------编辑------------------------
我拿错了值进行比较,cdcdcd来自其他地方。我仍然有我的方法在到达异常之前抛出异常,但我的问题在其他地方,我希望有一种方法可以"取消抛出"我原来的问题。谢谢你的帮助。
----------------编辑------------------------
我有一个从某个第三方类继承来的类(MyClass((反过来,它又从直接显示类派生而来——如果这很重要的话,从CBaseFilter派生(。我写这个代码:
MyClass* val = NULL;
val = new MyClass(); // Create an instance of the class.
尝试进行方法调用会导致引发异常。经过一点侦查,我发现当我取消引用val(val本身似乎是有效的……类似于0x0777fc90(时,它包含0xcdcdcd。我环顾四周,这似乎表明内存已在堆上分配,但尚未初始化。
这是什么意思?!对new的调用怎么可能成功(val!=NULL(,但内存还没有初始化到足以有指针指向它?是否可能是某些基类初始化出现了问题?如果是的话,我在找什么?
0xCDCDCD是来自C运行库内部的调试值。当您在调试构建中分配内存块时,它会被初始化为这个伪值,以期捕捉错误。0xCDCDCDCD不是NULL,并且从来都不是有效的内存指针。
是否有从DirectShow传递过来的HRESULT可供检查?
试着调用WINAPI函数GetLastError((,看看会显示什么。