[gelöst] delete wirft Fehler
Verfasst: 28.08.2011, 17:34
Hallo,
ich hab für meinen kleinen Raytracer jetzt noch einen Datei-Loader geschrieben. Der besteht aus einer Hauptklasse Loader und dann für jeden Dateityp nochmals aus einer abgeleiteten Klasse z.B. LoaderOBJ.
Ich habe jetzt in meiner Hauptklasse folgende LoadFile-Methode:
Alles soweit gut, die Datei wird auch richtig eingelesen, allerdings wirft er bei delete fileloader; einen Fehler: "free(): invalid next size (fast)", lösche ich die Zeile, kommt der Fehler nicht und das Programm läuft ganz normal weiter. Ich habe jetzt gerade allerdings keine Idee, an was dieser Fehler liegen könnte, denn der Fehler kommt auch bei folgendem reduziertem Code:
Der Destruktor hat jeweils noch virtual mit dabei, aber trotzdem scheint es an der abgeleiteten Klasse zu liegen, da es mit fileloader=new Loader(); keinen Fehler gibt. Als Attribute habe ich in den Unterklassen lediglich einige vectoren, keine Pointer, in der Hauptklasse gar keine Attribute.
Könnt ihr mir dabei bitte helfen?
Vielen Dank
hundvdf
ich hab für meinen kleinen Raytracer jetzt noch einen Datei-Loader geschrieben. Der besteht aus einer Hauptklasse Loader und dann für jeden Dateityp nochmals aus einer abgeleiteten Klasse z.B. LoaderOBJ.
Ich habe jetzt in meiner Hauptklasse folgende LoadFile-Methode:
Code: Alles auswählen
void Loader::LoadFile(string filename,vector<Objekt> &objekte,MaterialManager &matman) {
vector<string> split;
strsplit(filename,'.',split);
Loader *fileloader=NULL;
if(streq(split[split.size()-1],"ac")) {
fileloader=new LoaderAC();
}
else if(streq(split[split.size()-1],"obj")) {
fileloader=new LoaderOBJ();
}
if(fileloader==NULL)
throw new Exception(NULL,__FILE__,__LINE__,"Fehler beim Laden des Modells","Dateiformat wird nicht unterstützt!");
fileloader->LoadFile(filename,objekte,matman);
delete fileloader;
}
Code: Alles auswählen
void Loader::LoadFile(string filename,vector<Objekt> &objekte,MaterialManager &matman) {
Loader *fileloader=NULL;
fileloader=new LoaderOBJ();
if(fileloader==NULL)
throw new Exception(NULL,__FILE__,__LINE__,"Fehler beim Laden des Modells","Dateiformat wird nicht unterstützt!");
delete fileloader;
}
Könnt ihr mir dabei bitte helfen?
Vielen Dank
hundvdf