Kleine Ziegrfrage
-
Hallo !
Hab eine ganz kurze Frage bezüglich Zeiger, angenommen ich erstelle einen Zeiger und alloziiere 1000 byte mit malloc.
Angenommen ich erhöhre den Zeiger jetzt um 500byte, zeigt er ja in die Mitte des alloziierten Speichers, jetzt meine Frage:
wenn ich mit free den Zeiger freigeben will, dem 1000 Byte zugesichert worden sind, der aber um 500 erhöhrt worden ist, wird dann der ganze 1000Byte-block wieder freigegeben, oder nur die letzen 500 ???
hier ein kleines Beispiel:
char* zeiger; zeiger = (char*) malloc(1000); zeiger += 500; free(zeiger); //Wird hier der 1000Byte-block freigegeben, oder nur die letzten 500 (oder etwa ab hier die nächsetn 1000Byte ??)
Danke !
-
Wahrscheinlich wird überhaupt nix frei gegeben.
-
absturz
-
... schrieb:
Wahrscheinlich wird überhaupt nix frei gegeben.
nicht nur wahrscheinlich
-
Also muss der Zeiger beim Aufruf von free wieder auf seine Ursprüngliche addresse verweisen ??
-
Du musst bei free das angeben, was du von malloc erhalten hast.
-
Ok vielen Dank !
Jetzt hab ich kein Speicherleak mehr
-
valgrind ist bei memoryleaks nen ganz brauchbares tool ,)