speicherleak in hashtabelle mit separate chaining
-
notnerdyet schrieb:
würdest du dich etwas auskennen, wüsstest du, dass das noch lang nicht "alles" ist.
Wo hat er das denn behauptet?
aber was solls, du wolltest mir eh nicht helfen, weil das thema hast du nicht angeschnitten, sondern mir was ganz anderes erzählt.
Er hilft dir doch. Also Leute gibts

wenn ich das testprogramm einfach mit "quit" beende
Wasn das?
-
sorry. er hat geschrieben, ich soll ned alles posten, hab ich ja ned.

-
Michael E. schrieb:
wenn ich das testprogramm einfach mit "quit" beende
Wasn das?
das ist ein programm mit dem ich die methoden usw. ausprobieren kann.
-
notnerdyet schrieb:
sondern mir was ganz anderes erzählt.
Genau - ich hab dir gesagt, was du machen musst, um selbst den Fehler zu finden...
Du sollst deine Funktionen kleiner und übersichtlicher gestalten - wenn du meinen weg genommen hättest, hättest du schon bei pop_front() gesehen, was passiert - und wärst überrascht gewesen - aber hättest es iwann verstanden und gemerkt, was du falsch machst...bb
edit:
zu konstruktoren:Bucket<E>* neuBuck = new Bucket<E>(); neuBuck->key = e[i]; neuBuck->next = array[pos]; array[pos] = neuBuck;dort sieht man doch, dass da was nicht hinhaut...
array[pos] = new Bucket<E>(e[i], array[pos]);
müsstest Bucket eben nur nen passenden Konstruktor verpassen - und schon könnte man mit einem Block erfassen, was dort vor sich geht...bb
-
sorry fürs missverständnis.
auf deiner seite ist auch ein missverständnis passiert. ich habe meinen konstruktor noch garnicht gepostet. das was du da zitierst ist meine add-methode.
mein konstruktor sieht so aus:
template <typename E> ContSepChain<E>::ContSepChain( ) : tablesize( 7 ), n( 0 ) { array = new Bucket<E>* [tablesize]; if (array != NULL){ for (size_t i = 0; i < tablesize; i++) array[i] = NULL; } }
-
@unskilled: danke für deine mühe mein programm zu vereinfachen.
das problem liegt aber wie gesagt im speicherleak. das programm funktioniert ja. vereinfachungen es besser lesen zu können, hilft mir dabei auch nicht weiter.
irgndwelche ideen wie ich den destruktor gestalten kann bzw. sonstwas tun soll um meine speicherleaks zu entfernen?
-
notnerdyet schrieb:
das problem liegt aber wie gesagt im speicherleak. das programm funktioniert ja. vereinfachungen es besser lesen zu können, hilft mir dabei auch nicht weiter.
Das ist wie: "Ich hab nen Problem, weiß nicht, wieso genau, aber besser verstehen brauch ich hier gar nichts - ich warte einfach, bis mir jmd mein Problem löst - und das nächste Mal mach ichs wieder genau so" -.-
-
mag sein, dass ich den eindruck vermittle, da ich extrem unter zeitdruck stehe, das problem lösen zu müssen. verstehen jedoch will ichs schon.
-
unskilled schrieb:
zu konstruktoren:
Bucket<E>* neuBuck = new Bucket<E>(); neuBuck->key = e[i]; neuBuck->next = array[pos]; array[pos] = neuBuck;dort sieht man doch, dass da was nicht hinhaut...
array[pos] = new Bucket<E>(e[i], array[pos]);
müsstest Bucket eben nur nen passenden Konstruktor verpassen - und schon könnte man mit einem Block erfassen, was dort vor sich geht...bb
hab nen konstruktor für bucket erstellt, läuft jetzt auch mit der zeile: array[pos] = new Bucket<E>(e[i], array[pos]);
jedoch kann ich den speicher den ich mit "new" erstellt habe immer noch nicht löschen. für hilfreiche hinweise bin ich sehr dankbar!!!
-
habs nun selbst gelöst.
tipps von "unskilled" waren wie der name ja scho sagt ....

-
notnerdyet schrieb:
tipps von "unskilled" waren wie der name ja scho sagt ....

Jedenfalls weiß ich, wie ich meine Klassen implementiere, um so was selbst (vorzeitig) zu finden - und die Lösung war ja schon auf der ersten Seite, also brauchte ich auch nichts mehr zum Problem an sich sagen - nur meine Aussage erklären - von wegen Konstruktoren sind dir kein Begriff...
bb