visual使用C++,我在创建一个类时会得到0xcdcdcd的指针——发生了什么

visual With C++, I get pointer with 0xcdcdcdcd when creating a class - what is happening?

本文关键字:0xcdcdcd 什么 发生了 指针 一个 C++ 使用 创建 visual      更新时间:2023-10-16

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

我拿错了值进行比较,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((,看看会显示什么。