musketaquid
14-09-2007, 17:52
Muss ich die Listen mit delete wieder löschen, oder reicht es wenn ich den Vector lösche?
...
std::vector<std::list<std::string> > l;
...
for(int i = 0; i < t.size(); i++)
l.push_back(*(new list<string>));
...
// Die Listen werden bearbeitet
...
// Beim löschen des Objekts soll der Speicherplatz wieder freigegeben werden
//l.erase(l.begin(), l.end()); // Hier gibt es keine Fehler
for(int i = 0; i < t.size(); i++) // Aber dafür hier
delete &l[i];
...
Die letzte for Schleife mit delete, führt bei mir zu einem Speicherzugriffsfehler.
Meine Frage ist jetzt:
Wenn ich die letzte Schleife weglasse, und den Vector mit erase lösche, wird dann auch der mit new erzeugte Speicher wieder freigegeben?
...
std::vector<std::list<std::string> > l;
...
for(int i = 0; i < t.size(); i++)
l.push_back(*(new list<string>));
...
// Die Listen werden bearbeitet
...
// Beim löschen des Objekts soll der Speicherplatz wieder freigegeben werden
//l.erase(l.begin(), l.end()); // Hier gibt es keine Fehler
for(int i = 0; i < t.size(); i++) // Aber dafür hier
delete &l[i];
...
Die letzte for Schleife mit delete, führt bei mir zu einem Speicherzugriffsfehler.
Meine Frage ist jetzt:
Wenn ich die letzte Schleife weglasse, und den Vector mit erase lösche, wird dann auch der mit new erzeugte Speicher wieder freigegeben?