Heim >Backend-Entwicklung >C++ >Warum setzt C Zeiger nach dem Löschen nicht automatisch auf NULL?

Warum setzt C Zeiger nach dem Löschen nicht automatisch auf NULL?

DDD
DDDOriginal
2024-11-11 01:53:02440Durchsuche

Why Doesn't C   Automatically Set Pointers to NULL After Deletion?

Automatische Nullifizierung nach dem Löschen: Warum nicht?

Die Praxis, den Zeiger nach der Durchführung eines Löschvorgangs automatisch auf NULL zu setzen, ist eine Diskussionsthema für Programmierer. Viele argumentieren, dass diese Maßnahme das Auftreten von durch ungültige Zeiger verursachten Abstürzen erheblich reduzieren würde. Der C-Standard hat diesen Ansatz jedoch nicht übernommen, was die Benutzer neugierig auf die Gründe für diese Entscheidung macht.

Laut Bjarne Stroustrup, dem Erfinder von C, gab es mehrere Faktoren, die zum Ausschluss der automatischen Zeigernullierung beigetragen haben :

Überlegungen zur Leistung:

Die Einführung einer zusätzlichen Anweisung zum Nullsetzen des Zeigers könnte Auswirkungen haben die Gesamtleistung von Löschvorgängen, insbesondere in Szenarien, in denen die Leistung von entscheidender Bedeutung ist.

Const-Zeiger:

Const-Zeiger beziehen sich auf Speicherorte, die nicht geändert werden können. Das automatische Setzen solcher Zeiger auf NULL könnte zu undefiniertem Verhalten führen, da das Ändern des Inhalts eines Konstantenobjekts nicht zulässig ist.

Stroustrup räumte jedoch auch ein, dass diese Bedenken durch eine spezielle Behandlung von Konstantenzeigern hätten angegangen werden können.

Der Standard erlaubt Löschvorgänge für R-Werte (temporäre Objekte), die nicht auf Null gesetzt werden können. Diese durch die Sprache selbst auferlegte technische Einschränkung stellt ein weiteres Hindernis für die automatische Zeigeraufhebung dar.

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

Stellungnahme:
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