Verständnissfrage
-
Erst mal sorry zum Titel, wusste nicht wie ich die Frage prägnant auf den Punkt bringen könnte.
Ich hab ne Frage von der ich meine die Antwort schon zu kennen, aber für das sichere Gefühl und das fundiertere Wissen nochmal nachfrasgen möchte;
Wenn ich ein solches Struct
typedef struct commadlistElement { int command; int paramLength; char *params; struct commadlistElement *previous; } commadlistElement_t;
mit malloc erstelle, dann fülle und später mit free wieder freigebe, muss doch auch extra nochmal vorher *params freigeben, oder? Sonst würde es während der gesamten Laufzeit Speicher belegen und einfach 'rumliegen' oder?
-
Einfache Regel: Für jedes malloc() ein free().
-
Ok, danke.
-
Ah, was ich aber noch wissen wollte; Wenn ich
char *ptr1;
ptr1 = malloc(32);
ptr1 = was anderes;
mache, bleibt der Speicher trotzdem reserviert, oder?
-
of course.
greetz, Swordfish
-
Kannst du die oben genannte Regel auf dein Beispiel anwenden?
-
Luke-2 schrieb:
Ah, was ich aber noch wissen wollte; Wenn ich
char *ptr1;
ptr1 = malloc(32);
ptr1 = was anderes;
mache, bleibt der Speicher trotzdem reserviert, oder?
es ist deine Aufgabe als Programmierer, dass sowas nicht passiert.
-
Kann ich. Trotzdem, noch eine letzte Frage, dann bin ich auch ruhig! Wenn ich obengenanntes struct (mit malloc) erzeuge und mit free wieder lösche, sind die INTs auch gelöscht, oder?
-
Für jedes malloc() ein free()...
-
Ach duu
Ne ok, ich hab verstanden. Danke!