Speicherverwaltung
-
Hallo
hab da mal ne frage zur speicherverwaltung.
bsp.
hab ne doppelt verkette liste
also
Speicherverwaltung
struct node { int value; char *val; }node;
wenn ich jetzt sagen wir 1 element habe;
wie muss ich dann freen das ich keine leaks habe ?
und wie muss ichs machen wenn ich 2 elemente habe ? muss ich da beide extra freen oder wie ?
-
du benötigst für jedes Objekt, für welches du Speicher anforderst, ein free.
In deinem Fall für die doppelt verkettete Liste musst du die ganze Liste durchgehen und jedes Objekt für sich "free'n".
Dabei fällt mir auf, dass dein struct zumindest einen Zeiger auf seinen Vorgänger und Nachfolger beinhalten sollte.
-
Speicher_sucher schrieb:
muss ich da beide extra freen oder wie ?
und wenn der char *val; per malloc o.ä. besorgt wird braucht der auch noch ein free
-
ja da fehlen die pointer ^^ also wenn ich ne doppelt verkette liste hab mit 100 elementen, dann muss ich alle hundert freen... is dasn dreck
-
Speicher_sucher schrieb:
is dasn dreck
nicht immer... besorg dir mit einem call 100 und du brauchst nur 1 free... wenn du nicht denken willst nimm java oder so.