vector mit pointern auf objekte
-
hi,
was passiert wenn ich einen vector welcher pointer auf objekt enthält zerstöre? werden dann die objekte auch zerstört oder nur die pointer?
ich gehe davon aus das die objekte nicht gelöscht werden, will aber lieber auf nummer sicher gehen..
gruß
-
Deine Annahme ist richtig: Die auf dem Heap erstellten Objekte werden nicht zerstört. Die musst du vorher eigenhändig zerstören, bevor du den vector löscht. Sollte es sich allerdings um "wirkliche" Objekte handeln, also Kopien von deinem Objekt, so werden diese mit zerstört.
{ std::vector<Objekt*> muh; muh.push_back(new Objekt()); } //Zerstörung von muh, aber das Objekt lebt auf dem Heap weiter. { std::vector<Objekt> muh Objekt test1(21); muh.push_back(test1); } //Zerstörung des Vectors muh und des Objekts test1.
-
ich kann dir noch nichts ganz folgen.
also die objekte werden vorher mit new erstellt und der pointer wird dann mit .add( pointer) dem vector übergeben.
landen objekte die mit new erstellt werden auf dem heap?
edit: hab den code nicht gesehn.
also scheint es genau so zu sein wie ich das meinte und sachen die über new erstellt werden landen auf dem heap richtig?
-
Praktisch immer, ja.
Wenn man die (wahrscheinlich polymorphen) Objekte auch mit dem Vektor verwalten will statt sie nur darin aufzuheben (z.B. für eine Warteschlange), nimmt man entweder Smart-Pointer oder Boost.PtrContainer.
-
danke, ich denke nun habe ich es geblickt.