小编Ste*_*ven的帖子

使用C++,我在创建类时获得带有0xcdcdcdcd的指针 - 发生了什么?

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

我抓住错误的值进行比较,cdcdcdcd来自其他地方.我仍然有我的方法在它们被触及之前抛出异常,但我的问题在于其他地方,我希望有一种方法可以"解开"我原来的问题.谢谢您的帮助.

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

我有一个类(MyClass)我从一些第三方类继承(反过来来自直接显示类 - 来自CBaseFilter,如果这很重要).我写这段代码:

MyClass* val = NULL;
val = new MyClass(); // Create an instance of the class.
Run Code Online (Sandbox Code Playgroud)

尝试进行方法调用会导致抛出异常.通过一点点调查,我发现当我取消引用val(val本身似乎有效......类似于0x0777fc90)时,它包含0xcdcdcdcd.我环顾四周,似乎这可能表明内存已经在堆上分配,但没有初始化.

那是什么意思?!如何调用new成功(val!= NULL)但是内存没有初始化到足以指向它的指针?某些基类初始化可能出现问题吗?如果是这样 - 我在寻找什么?

c++ memory initialization visual-c++ in-class-initialization

2
推荐指数
1
解决办法
2万
查看次数