Es heißt ja immer, was man mit new anlegt, muss man auch mit delete wieder löschen!
richtig. gutes Design waere dann, das new und das dazugehoerige delete im selben context zu finden sind. also Ctor /Dtor einer Klasse, im selben block, oder eben ueber Smartpointer.
Generell sollte man bei c++ sowieso rohe news vermeiden.
Erfahrene c++ programmierer sollten deshalb recht wenig probs mit leaks haben, also theorethisch.
Nun kommt aber die Qt, da kann man gutes c++ design vergessen ^^ weil Qt oft zwingend new vorraussetzt, und eben selber extensiv gebraucht von new macht.
Was ich hauptsaechlichst mit sagen will:
normal sollte ein c++ programmierer den Speicher im kopf quasi ueberwachen koennen. wenn Du ein new siehst, solltest du sofort wissen, wo das dazugehoerige delete passiert. Oftmals muss man dann nur den Programmfluss ueberfliegen um zu schauen ob das delete aufgerufen wird.
Eigentlich sollte das bei normalen c++ gar kein Problem sein. Da gehoert nur bissi uebung zu.
Bei Qt wird halt alles bissi komplizierter, aber die generellen regeln bleiben gleich. Es kommen halt nur noch paar Komponenten zu, die man ned unter kontrolle hat.
Wie gesagt, 1. ansatz waere, das du jedes new in deinem code markierst, und schaust wo das delete dazu aufgerufen wird. dann checkst, ob er auch in den code reinlaeuft.
Ich habe nur mit dem system-monitor gesehen, dass der Speicherbedarf immer wächst, beim Arbeiten mit dem Programm!
Das muss nicht zwingend sein, das es alles speicherleaks sind. die STL allokiert speicher z.b. sehr progressiv fuer ihre container ....
Aber zu erkennen, ob der speicherverbrauch da von leaks kommt, oder die STL / Qt nur mal richtig zulangt ist ned einfach .... gibt aber paar tricks zu.
Einfacher isses aber wirklich nen Controllprog fuern speicher zu verwenden. Valgrind sollte dir verlaesslicher sagen koennen, ob leaks hasst.
Ciao ...