如何在一个类中未初始化“this”指针?

时间:2013-01-19 22:41:05

标签: c++ this initialization

我似乎得到了一个非常奇怪的错误。基本上,我有一个A类,用于管理像素数据的磁盘缓存。从主程序中,我使用:

创建A的对象
A* obj = new A(...);

然后,我调用一种方法从磁盘读取一个像素:

Pixel pix = obj->read(...);

但是,当我尝试使用“this”指针从read()方法中访问A的私有成员变量时,我得到一个访问冲突错误,因为“this”指针未初始化(由MSVC设置为0xCCCCCCCC) 2012)。但是,我检查了构造函数返回的“obj”指针的值,它似乎是一个有效的地址。

我的猜测是构造函数以某种方式失败了,但为什么它会返回一个指向该对象的指针呢?或者,如果构造函数没有失败,为什么“this”指针在类中未初始化?

1 个答案:

答案 0 :(得分:2)

In Visual Studio C++, what are the memory allocation representations?

  
      
  • 0xCCCCCCCC:由Microsoft的C ++调试运行时库用于标记未初始化的堆栈内存
  •   

当您执行obj->时,您的obj未初始化。问题中的两行代码不是您的真实代码,或者介于两者之间的重要事项。

通过使用调试器进行简单的步骤将为您提供问题的答案。

可能的原因之一是您的函数中有2 + obj个局部变量。