我在一个类中初始化一个空指针。之后,我检查它是否在同一个类中是NULL。但它并不总是0x0。有时它是0x8或0xfeffffff或0x3f800000或0x80或其他奇怪的东西。在大多数情况下,指针是0x0,但有时它会以某种方式被修改。空指针比较失败
我敢肯定,我没有改变它在我的代码中的任何地方。有没有办法通过“本身”来改变它?
这里是我的代码:
MeshObject::MeshObject()
{
mesh.vertexColors = NULL;
}
MeshObject::MeshObject(const MeshObject &_copyFromMe)
{
SimpleLog("vertexColors pointer: %p", _copyFromMe.mesh.vertexColors);
if (_copyFromMe.mesh.vertexColors != NULL)
{
SimpleLog("vertexColors");
this->mesh.vertexColors = new tColor4i[_copyFromMe.mesh.vertexCount];
memcpy(this->mesh.vertexColors, _copyFromMe.mesh.vertexColors, _copyFromMe.mesh.vertexCount * sizeof(tColor4i));
}
}
我的应用程序崩溃,因为vertexColors未初始化,并正在被复制。但它是NULL,不应该被复制。
谢谢。
您不要在复制构造函数中设置vertexColors。 – 2010-04-01 16:20:27