c++ - NULL 指针比较失败

标签 c++ pointers null

我在一个类中将一个指针初始化为 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,不应复制。

谢谢。

最佳答案

这个:

MeshObject::MeshObject(const MeshObject &_copyFromMe)

是一个复制构造函数。因为它是一个构造函数,所以它也应该将 vertexColors 成员设置为某个已知且希望有效的值,但事实并非如此,除非被复制的事物中的值不是 NULL。但是如果它是 NULL 呢?基本上,您的 if() 需要一个 else。

关于c++ - NULL 指针比较失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2561799/

相关文章:

c++ - 看似毫无意义的#define of function

c++ - GLSL/OpenGL FBO 不会解除绑定(bind)

c++ - 指针函数

android - Textview 在 Android 上返回 null

c++ - 缺少类函数声明是否安全?

c++ - 在 [0..n-1] 范围内生成 m 个不同的随机数

c - 应为 const char * 但参数是 char 类型

c - 通过指向 char 的指针将值设置为 0

java - java 中的组合框无法正常工作 bluej

ruby-on-rails - Rails where 条件为零值