Я инициализирую в классе указатель на NULL. После этого я проверяю, имеет ли он значение 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 и не должно копироваться.
Спасибо.