Freed Memory
-
Hey Leute,
ist es in C möglich heraus zubekommen wieviel Speicher freigegeben wird nach dem man eine Struktur oder Pointer mit free freigegeben hat wieder?
-
void *p = malloc(n); free(p);
(annahme: es gibt keine fehler)
Wenn malloc(n) aufgerufen wird, dann werden n chars zusammenhängender speicher reserviert und die anfangsadresse wird zurückgegeben.
Wenn der speicher freigegeben werden soll, dann wird die anfangsadresse free() übergeben, daraufhin werden die n chars wieder freigegeben.Also gibt free immer genau so viel speicher frei wie vorher reserviert wurde.
-
Das ist wohl so - selbst mit realloc erweiterter Speicher wird durch das
free mit freigegeben.
-
Im Visual Studio würde ich einen Blick auf die Dokumentation zu
crtdbg.h
werfen. Damit ist es möglich, bei komplexen Programmen Speicherlecks zu entdecken.
Beispiele dazu auf
http://home.f1.htw-berlin.de/Scheibl/c/index.htm?./Struktur/AufgabeZeiger_L.htm$U03551
Das Beispiel dient auch dazu, einen hohen Dienstgrad im Krieg der Sterne zu erlangen.