Wie free Zeigers Platz im Speicher?
Ich habe eine Frage zu Zeigern in C. Jeder Zeiger hat 4 bytes im Speicher (Adresse). Wenn ich malloc() nur Speicher reserviert, und setzen Sie die Adresse auf den Zeiger, auch free() nur befreit den Speicher, der Zeiger verweist. Aber wie kann ich das löschen, Zeiger (4 bytes) im Speicher, die ich nicht mehr brauche ? Gibt es nicht ein memory-leak ?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den Zeiger selbst ist eine regelmäßige variable, was bedeutet, dass, wenn es den Bereich verlässt diesen 4 bytes zugewiesen, wird es automatisch freigegeben werden, genau wie jede andere variable, die Sie haben könnten, und erklärte, dass der gleiche Umfang.
Die Zeiger-variable selbst in der Regel hat automatische Speicherdauer, d.h. es ist auf dem stack, so dass der belegte Speicher wird freigegeben werden und wiederverwendet werden, sobald die variable geht out of scope.
In der Regel der Mauszeiger wird in eine stack-variable. Oder zurückführen durch heap reserviert Zeiger auf ein stack-variable. Der stack ist statisch alloziert und freigegeben wird, wenn der Prozess beendet wird. Also nichts ist ausgelaufen.
Ist ein Zeiger nur eine normale variable, und hat die gleiche Lebensdauer einer normalen variable hätte an seiner Stelle. Ich es ist eine lokale nicht-statische Variablen, deren Lebensdauer endet, wenn es den Bereich verlässt. Wenn es eine variable mit static storage duration, deren Lebensdauer endet, wenn das Programm endet. Wenn es auf dynamisch allokierten Speicher, deren Lebensdauer endet, wenn dieser Speicher freigegeben wird, und für die Zukunft C1x standard, wenn es eine thread-lokale variable, deren Lebensdauer endet, wenn der thread endet.
in eine nut shell..man kann nicht frei ein-Zeiger-Lage oder-Speicher von jedem code oder Befehl..für Sie könnte sein wollen, um eine perfekte Programm-codes..mit akuten memory Verbrauch..ich bekomme es ..aber man kann..
danke..