Ich habe Fragen über Zeiger in C. Jeder Zeiger hat 4 Bytes im Speicher (Adresse). Wenn ich malloc () aufrufe, wird nur Speicher zugewiesen und seine Adresse dem Zeiger zugewiesen, auch gibt free () nur den Speicher frei, auf den der Zeiger zeigt. Aber wie kann ich Zeiger (4 Bytes) im Speicher löschen, die ich nicht mehr benötige? Gibt es kein Speicherleck?
Der Zeiger selbst ist eine reguläre Variable, was bedeutet, dass, wenn er außerhalb des Gültigkeitsbereichs liegt, diese 4 zugewiesenen Bytes automatisch freigegeben werden, genau wie jede andere Variable, die Sie möglicherweise für denselben Bereich deklariert haben.
Normalerweise wird der Zeiger in einer Stapelvariablen gehalten. Oder zurückverfolgt durch Heap-zugeordnete Zeiger auf eine Stapelvariable. Der Stapel wird statisch zugewiesen und freigegeben, wenn der Prozess beendet wird. So ist nichts durchgesickert.
Ein Zeiger ist nur eine normale Variable und hat dieselbe Lebensdauer wie eine normale Variable an seiner Stelle. I es ist eine lokale nicht-statische Variable, ihre Lebensdauer endet, wenn sie den Gültigkeitsbereich verlässt. Wenn es sich um eine Variable mit statischer Speicherdauer handelt, endet ihre Lebensdauer mit dem Ende des Programms. Wenn sie sich auf dynamisch zugewiesenem Speicher befindet, endet ihre Lebensdauer, wenn dieser Speicher freigegeben wird, und für den zukünftigen C1x-Standard endet ihre Lebensdauer, wenn der Thread endet, wenn der Thread endet.
Tags und Links c memory pointers memory-management free