Resevierter Speicher löschen
-
Hallo,
ich arbeite mit vielen Vector Befehle. Diese sind in einer eignen Unit untergebracht. Frage: reicht es, wenn ich in FormClose folgender BefehlmyVector.clear();nutze, um den Speicher freizugeben ?
bis bald
Siegfried
-
Hallo
.clear() gibt den Speicher der vector-Elemente frei.
Aber es gibt nicht den Speicher von Heap-Instanzen frei, auf die in den vector-Elementen verwiesen wird. Das must du selber erledigen.bis bald
akari
-
Hallo,
den .clear() nutze ich, wenn ich die Anwendung schliesse. Denke, das das auch so richtig ist.
ist das viel Arbeit mit den Heap-Instanzen ?bis bald
Siegfried
-
Hallo
den .clear() nutze ich, wenn ich die Anwendung schliesse. Denke, das das auch so richtig ist.
Selbstverständlich ist das richtig. Nur nicht ausreichend, wenn du in dem vector Instanzen hast, die du mit new selber angelegt hast
ist das viel Arbeit mit den Heap-Instanzen ?
Nein, einfach vor dem clear() alle Elemente durchgehen und delete aud diese anwenden.
bis bald
akari
-
Hallo,
keine Ahnung, wie das geht.dies habei ich bis jetzt gemacht.
in .hstd::vector<int> myVector;in .cpp FormShow
myVector.resize(50);und in .cpp FormClose
myVector.Clear();bis bald
Siegfried
-
Hallo
*seufz* bei int ist delete auch gar nicht notwendig. Da reicht das clear() völlig aus, ist beim Programmende eigentlich auch gar nicht mal nötig.
Ich hab ja geschrieben, das delete nur bei Heap-Instanzen norwendig ist, also wenn du Objekte mit new ertellst.
bis bald
akari
-
Hallo,
Danke für die guten Infos. Ab und zu lerne ich auch etwas von euch hinzu.
Mit "New" frage ich später noch einmal.bis bald
Siegfried

-
Hallo,
Noch ein Frage. Welche Möglichkeit habe ich zum überprüfen, ob alle resevierte Speicher auch entfernt wurden. Giebt es in den C++ Optionen etwas ?
bis bald
Siegfried
-
Hallo
- indem du sauber programmierst (jedes new erfordert ein delete) und RAII berücksichtigst (std::auto_ptr)
- Es gibt externe Programme die sowas untersuchen.
- in deinem Fall, mit den ints bist du auf jedenfall auf der sicheren Seite.bis bald
akari
-
Hallo,
wo finde ich so ein Programm, und wie heißt dies ?
bis bald Siegfried
-
Da du mit dem BCB arbeitest würde ich einfach mal sagen den BCB-internen CodeGuard verwenden. Der ist meines erachtens ziemlich gut.
