C++ 分配数组时分配错误

C++ 分配数组时分配错误,c++,C++,我在类的构造函数上有以下代码: verts=new GLfloat[nVerts]; verts是类(GLfloat*)的成员变量,nVerts为4。那个代码有什么问题吗?如果我尝试执行malloc(sizeof(GLfloat)*nVerts),则会得到相同的错误 我认为我没有耗尽内存,因为如果我将这行代码更改为代码的另一部分(例如,在调用构造函数之前调用构造函数的方法,如下所示:GLfloat*test=new GLfloat[4]it works)我会检查三件事: 您是否100%确定nV

我在类的构造函数上有以下代码:

verts=new GLfloat[nVerts];
verts是类(GLfloat*)的成员变量,nVerts为4。那个代码有什么问题吗?如果我尝试执行malloc(sizeof(GLfloat)*nVerts),则会得到相同的错误 我认为我没有耗尽内存,因为如果我将这行代码更改为代码的另一部分(例如,在调用构造函数之前调用构造函数的方法,如下所示:
GLfloat*test=new GLfloat[4]
it works)

我会检查三件事:

  • 您是否100%确定
    nVerts
    为4
  • 难道记忆不是真的耗尽了吗
  • 你的堆不是被破坏了吗?valgrind可以帮你

  • 是-问题是,您永远不应该使用
    new[]
    。总是去
    std::vector
    。我打赌
    nVerts
    实际上是未初始化的。@XaitormanX-如果是,你不会得到一个坏的分配。或者,这实际上不是问题所在。你必须发布更多的代码。应该说,无论是什么,将
    new[]
    更改为
    std::vector
    都不会对你有所帮助。2例如,如果你在循环中分配了许多这样的对象,而忘记编写正确的析构函数,可能会发生这种情况。