2016-07-11 20 views
0

Hier ist die Sache, die ich klären wollte. Ich habe eine andere Funktion, um Links anzuzeigen. Nach dem Aufruf dieser Anzeigefunktion habe ich einen Müllwert auf meiner Konsole erhalten. Aber als ich "Delete Temp" -Aussage kommentiert, es funktioniert gut, ich habe Ergebnisse wie erwartet. Bitte hilf mir. Vielen Dank.Erhält ein Zeiger nach dem Löschen die gleiche Speicheradresse und weist er in C++ wieder neuen Speicher zu?

void MyLinkedList::insertFirst(double data){ 
    MyLink *temp = new MyLink(data); 
    temp->next = first; 
    first = temp; 
    delete temp; 
} 
+1

'delete temp;' verfügt über den zuvor mit 'new' zugewiesenen Speicher, sobald die Funktion' first' zurückgibt, wird auf nicht zugeordneten Speicher verwiesen. Jeder Versuch, über den ersten Zeiger auf Daten zuzugreifen, führt zu UB (undefiniertes Verhalten). – dxiv

+0

@dxiv Vielen Dank für Ihren Kommentar. –

Antwort

1

Delete-Operator ist nicht zum Löschen des Zeigers selbst, sondern die Erinnerung von darauf hingewiesen zu löschen.