"Std :: bad_alloc": ¿estoy usando demasiada memoria?
El mensaje
terminate called after throwing an instance of 'std::bad_alloc'
what(): std::bad_alloc
Miré la traza inversa de gdb y este es el método de nivel más bajo que implementé yo mismo:
/*
* get an array of vec3s, which will be used for rendering the image
*/
vec3 *MarchingCubes::getVertexNormalArray(){
// Used the same array size technique as getVertexArray: we want indices to match up
vec3 *array = new vec3[this->meshPoints.getNumFaces() * 3]; //3 vertices per face
int j=0;
for (unsigned int i=0; i < (this->meshPoints.getNumFaces() * 3); i++) {
realVec normal = this->meshPoints.getNormalForVertex(i);
// PCReal* iter = normal.begin();
if (normal.size() >= 3) {
array[j++] = vec3(normal[0], normal[1], normal[2]);
}
cout << i << " ";
}
return array;
}
La declaración cout que ve arriba indica que termina después de más de 7000 iteraciones. La función anterior se llama solo una vez cerca del final de mi aplicación. Llamo a una función muy similar antes de llamar a lo anterior, que no causa problemas.