Wenn ich so etwas wie:Soll ich einen temporären Zeiger freigeben, um eine verkettete Liste zu durchlaufen?
function(DLL *dll) {
DLL_Node *temp = dll->head
// do stuff with temp like traverse list with temp=temp->next
// say when done, temp = dll->tail, should I free(temp) or leave it alone?
}
Ich bin mit Zeigern noch nicht sehr erfahren, scheint es, wie ich einen zusätzlichen Zeiger erstellt, aber es weist nur auf eine Position in der Liste, so dass ich nicht soll frei es und es wird gelöscht, wenn die Funktion endet?
By the way I definiert DLL
und DLL_Node
wie folgt aus:
typedef struct dll_node {
int data;
struct dll_node *prev;
struct dll_node *next;
} DLL_Node;
typedef struct DLL_ {
int count;
DLL_Node *head;
DLL_Node *tail;
} DLL;
ich eine Empfehlung für das Programm valgrind zur Prüfung auf Speicherlecks sah und es sagt, auf jeden Fall verloren und verloren indirekt sind beide 0 Bytes, aber möglicherweise verloren ist 2.064 Bytes. Nicht sicher, was das genau bedeutet oder ob es relevant ist.
Danke, dass ich dachte, aber ich war mir nicht ganz sicher. Irgendeine Idee, wenn die möglicherweise verlorenen Bytes, die von Valgrind gezeigt werden, sich sorgen müssen? – Austin
@Jake Möglicherweise verloren bedeutet, dass Ihr Programm nicht mehr einen Zeiger auf einige der zugewiesenen Blöcke enthält, aber es gibt Zeiger in der Mitte davon. Wenn Sie einige Zeigerarithmetik mit den Blöcken verwenden, die Sie zuweisen, würde Valgrind "möglicherweise verlorene" Warnungen erzeugen. – dasblinkenlight