Probleme mit new , delete
-
Hallo habe folgendes Problem,
wenn dieser Programmteil zum zweiten mal durchlaufen wird bokomme ich eine Zugriffsverletzung wenn ich wieder new ausführe.
if(InTelegramm != NULL){ delete[]InTelegramm; InTelegramm = NULL; } InTelegramm = new unsigned char[InTel_length];
Was könnte die ursache sein?
-
es scheint so, als ob der pointer dann nicht auf NULL gesetzt wurde, bei erneutem aufruf. wie initialisierst du ihn?
geh mal mit dem debugger durch, er zeigt dir an der stelle, was drin steht in dem zeiger.
-
unsigned char *InTelegramm;
Vor delete steht noch mein Inhalt drin, nach delete irgend welche Zeichen.
Wenn ich dann InTelegramm = NULL mach, wird der Pointer auch NULL.
Also ich geh mal davon aus das es so sein muß.
-
werf mal eine exception und schau dann nach, was drin ist
#include <new> #include <iostream> using namespace std; ... try { InTelegramm = new unsigned char[InTel_length]; cout << "Allokation erfolgreich!" << endl; } catch(bad_alloc&) { cerr << "Nicht genug Speicher! oder sonstwas faul.. mal aufangen und ausgeben?" << endl; } ...
-
Wenn man den Code so verkürzt, tut er übrigens exakt das gleiche:
delete[] InTelegramm; InTelegramm = new unsigned char[InTel_length];
Offensichtlich ist da kein Fehler drin. Mein Tipp ist, du schreibst irgendwo über die Arraybegrenzung hinweg. Das sorgt immer mal wieder in unvorhergesehener Weise für Abstürze bei new.