Fehler bei Arbeitsspeicherreservierung
-
Hallo.
Ich schreib gerade so einen MD2-Loader.
In meiner Klasse CPlayer, abgeleitet von CMD2Model, habe ich einen Vektor, der Zeiger auf CMD2Models speichert.
Dieser Vektor soll die Waffen darstellen.Meine Funktion CPlayer::AddWeapon schaut so aus:
void CPlayer::AddWeapon(const char* filename,const char* Texname) { CMD2Model *M=new CMD2Model(); MessageBox(NULL,"Jetzt kommt M->Load...","",0); if(M->LoadModel(filename)) {MessageBox(NULL,"in AddWeapon : Model erfolgreich geladen","",0);}; //if(!M->LoadTexture(Texname)) //{MessageBox(NULL,"Fehler in AddWeapon : Kann Textur nicht laden","",0);}; //Weapons.push_back(Weapon); };Also ruft AddWeapon immer die Funktion LoadModel von CMD2Model auf.
In dieser Fuktion gibt es dann an einer Stelle wo Speicher reserviert wird immer einen Absturz:triangles = new md2_triangles[header.num_tris];Das Problem habe ich nicht wenn das Player-Modell geladen wird, also bei CPlayer::LoadModel,
und ich hatte es auch nicht als ich die Waffen nicht als vector<CMD2Model*> sondern als CMD2Model* darstellte.
Deswegen vermute ich dass es damit zusammenhängt dass ich die Waffen als Vektor speichere.Also, wisst ihr warum ein Fehler bei der Speicherreservierung auftritt?
Danke!
-
Das kannst du doch alleine heraus finden. Fange doch einfach mal ne Exception ab. new wirft für gewöhnlich std::bad_alloc wenn zu wenig Speicher frei ist. Und ich schätze, header.num_tris ist auch zu groß. Denn wie groß ist denn ein md2_triangles-Objekt?