Hier ist meine Struktur AIn C++, wie ein Destruktor zum Freigeben von Speicher des Zeigers auf eine Struktur schreiben?
struct A {
int a1;
int a2;
~A() { }
};
B
wird eine andere Struktur, die einen Zeiger auf eine
struct B {
B(int b, A* a)
: b1(b), ptr2A(a)
{}
int b1;
A* ptr2A;
~B() {
delete b1;
// traverse each element pointed to by A, delete them <----
}
};
Später enthält auf I unten Code
int bb1;
vector <A*> aa1;
// do some stuff
B *ptrB = new B(bb1, aa1);
I/gratis alle löschen verwenden müssen der Speicher, auf den ptrB zeigt. Daher muss ich den korrekten Destruktor in Struktur B schreiben. Wie durchquere ich jedes Element, auf das A zeigt, und lösche es?
Sie benötigen ein C++ Buch. Sie versuchen, Dinge aus 'C' zu mischen und zu vergleichen und automatische Variablen zu löschen. Außerdem gibt es nichts, was man in "A" durchqueren kann - man löscht einfach "ptr2A". – Yuushi
Warum löschen Sie b1? – StarPinkER
mögliche Duplikate von [Wie schreibe ich Destruktor, wenn ich Zeiger in der Klasse habe?] (Http://stackoverflow.com/questions/5317735/how-to-write-destructor-when-i-have-pointers-in-class) – jogojapan