rekursive Methode in einer C++ Klasse
-
sie werden natürlich neu erstellt
-
na das ist eine gute nachricht, denn beim Debuggen meiner Methode hatte ich den Eindruck, das meine Mehthoden-Variablen nur überschrieben werden, und das führt zu totalem Chaos *g*
lg. Joe
-
BTW:
Wenn du unter Windows mit VS arbeitest solltest du auf jeden Fall die Stack-Size maximieren, wenn du mit rekursiven Funtkionen hantierst. Denn alle Variablen werden dort abgelegt und es kann relativ schnell zum stack-overflow kommen (nicht immer leicht zu debuggen). Wir haben das Problem bei rekursiven Füllalgorithmen bei Geometrien...
-
danke für den Tipp, und wie mach ich das beim VS 2003?
Weil wir grad beim Thema sind, wie find ich raus was Memory Leaks verursacht?
Kann das dadurch ausgelöst werden, wenn ich eine verkettete Lista habe und diese nicht vor dem Programmende komplett freigebe?lg. Joe
-
Joe80 schrieb:
Weil wir grad beim Thema sind, wie find ich raus was Memory Leaks verursacht?
Kann das dadurch ausgelöst werden, wenn ich eine verkettete Lista habe und diese nicht vor dem Programmende komplett freigebe?Im einfachsten Fall durch ein
#define new DEBUG_NEWam Anfang des Programms (das TRACE't dir am Programmende alle nicht freigegebenen Speicherblöcke zusammen mit der Zeile, in der sie reserviert wurden. Für genauere Analysen gibt es komplexere Leak-Detektoren.Und ja, diese Liste könnte das Problem sein - spendier ihr mal einen Destruktor, der die letzten verbleibenden Listenelemente aufräumt.
-
hmm, also ich bin bisher immer davon ausgegangen, das mir der Standard Destructor von der Klasse, aus der die einezelenen Listen Knoten bestehen den Speicher von selber freigibt. Ist das ein Irrglaube meinerseits?
-
Hast Du irgendwo selbst "new" benutzt? Dann musst Du auch selbst "delete" benutzen (es seidenn Du verwendest Smartpointer). Eigentlich ganz einfach

-
ja war fleißig mit dem "new" verwenden *g*
ok, was sind bitte "smartpointer" ist das was unanständiges?
-
Smartpointer sind Gebilde, die einen Zeiger verwalten, und sie automatisch zu einem adäquaten Zeitpunkt freigeben. Dieser Zeitpunkt könnte z.B. die Destruktion eines Objekts sein. Der Smartpointer selbst darf dafür natürlich nicht mit new angelegt worden sein

Gibt im Magazin einen schönen Artikel über den Smartpointer der Standardbibliothek und die von Boost, schau Dir den mal an!
-
ok, werd ich mir gelich mal einverleiben

thx. Joe