Heim > Backend-Entwicklung > C++ > Hauptteil

Warum macht C Zeiger nach dem „Löschen' nicht automatisch ungültig?

Susan Sarandon
Freigeben: 2024-11-16 05:53:03
Original
661 Leute haben es durchsucht

Why Doesn't C   Automatically Nullify Pointers After `delete`?

Automatische Zeigerlöschung nach dem Löschen

Das Weglassen der automatischen Zeigerlöschung nach dem Löschen hat Entwickler lange vor ein Rätsel gestellt. Während ein solcher Mechanismus Abstürze verhindern könnte, indem er Zeiger ungültig macht, wirft er auch Bedenken hinsichtlich der Leistung und Kompatibilität mit konstanten Zeigern auf.

Auswirkungen auf die Leistung

Ein möglicher Grund für diese Auslassung ist der Leistungsaufwand des zusätzlichen Befehls, der zum Aufheben des Zeigers erforderlich ist. In leistungskritischen Anwendungen könnte dies spürbare Auswirkungen auf die Ausführungsgeschwindigkeit haben.

Konstantenzeiger

Eine weitere Überlegung ist das Verhalten von Konstantenzeigern. Das Nullieren eines const-Zeigers würde zu einer potenziellen Mehrdeutigkeit führen, da der Zeiger keinem anderen Wert zugewiesen werden kann. Dies könnte bei Vorhandensein von Konstantenzeigern zu Verwirrung und unerwartetem Verhalten führen.

Stroustrups Perspektive

C-Erfinder Bjarne Stroustrup hat sich mit diesem Problem befasst und darauf hingewiesen, dass der Standard dies ausdrücklich zulässt Implementierungen von delete zum Annullieren von L-Wert-Operanden. Er hat jedoch festgestellt, dass diese Praxis von Implementierern nicht weit verbreitet ist.

Wichtiges Fazit

Während die Vorteile der automatischen Zeigernullierung nach dem Löschen offensichtlich sind, ist ihr Weglassen offensichtlich wahrscheinlich aufgrund einer Kombination aus Leistungsproblemen und Kompatibilitätsproblemen mit Konstantenzeigern. Daher müssen Entwickler Zeiger nach dem Löschen des dynamischen Speichers explizit ungültig machen, um Fehler beim Zugriff durch ungültige Zeiger zu verhindern.

Das obige ist der detaillierte Inhalt vonWarum macht C Zeiger nach dem „Löschen' nicht automatisch ungültig?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage