Ich finde, dass dies wenig hilfreich ist, da es meiner Erfahrung nach fast immer so ist, wenn Leute auf eine freigegebene Speicherzuordnung zugreifen, weil sie irgendwo einen anderen Zeiger darauf haben. Und dann widerspricht es einem anderen persönlichen Codierungsstandard, nämlich "Vermeiden Sie nutzlose Unordnung". Deshalb mache ich das nicht, da ich denke, dass es selten hilft und den Code etwas weniger lesbar macht.
Allerdings - ich werde die Variable nicht auf null setzen, wenn der Zeiger nicht erneut verwendet werden soll, aber oft gibt mir das übergeordnete Design einen Grund, sie trotzdem auf null zu setzen. Wenn der Zeiger beispielsweise Mitglied einer Klasse ist und ich gelöscht habe, worauf er verweist, lautet der "Vertrag" der Klasse, wenn Sie möchten, dass dieses Mitglied jederzeit auf etwas Gültiges verweist, sodass es auf null gesetzt werden muss aus diesem Grund. Eine kleine Unterscheidung, aber ich denke eine wichtige.
In c ++ ist es wichtig, immer darüber nachzudenken, wem es gehört diese Daten , wenn Sie einige Speicher zuweisen (es sei denn , Sie intelligente Zeiger verwenden , aber selbst dann ist einige Gedanken erforderlich). Und dieser Prozess führt dazu, dass Zeiger im Allgemeinen Mitglied einer Klasse sind und Sie möchten, dass sich eine Klasse jederzeit in einem gültigen Zustand befindet. Der einfachste Weg, dies zu tun, besteht darin, die Elementvariable auf NULL zu setzen, um anzuzeigen, dass sie zeigt zu nichts jetzt.
Ein allgemeines Muster besteht darin, alle Elementzeiger im Konstruktor auf NULL zu setzen und den Destruktoraufruf für alle Zeiger auf Daten löschen zu lassen, von denen Ihr Entwurf sagt, dass sie der Klasse gehören . In diesem Fall müssen Sie den Zeiger natürlich auf NULL setzen, wenn Sie etwas löschen, um anzuzeigen, dass Sie zuvor keine Daten besitzen.
Zusammenfassend lässt sich sagen, dass ich den Zeiger nach dem Löschen häufig auf NULL setze, aber dies ist Teil eines größeren Entwurfs und der Überlegungen, wem die Daten gehören, anstatt blind einer Codierungsstandardregel zu folgen. Ich würde dies in Ihrem Beispiel nicht tun, da ich denke, dass dies keinen Vorteil hat und es "Unordnung" hinzufügt, die meiner Erfahrung nach genauso für Fehler und schlechten Code verantwortlich ist wie diese Art von Dingen.
ptr == NULL
bevor Sie etwas damit tun. Wenn Sie Ihre freien Zeiger nicht aufheben, erhalten Sie einenptr != NULL
immer noch unbrauchbaren Zeiger.