Heim > Backend-Entwicklung > C++ > Wie funktioniert die Objektzerstörung in C?

Wie funktioniert die Objektzerstörung in C?

Linda Hamilton
Freigeben: 2024-11-26 05:37:08
Original
894 Leute haben es durchsucht

How Does Object Destruction Work in C  ?

Objektzerstörung in C

Objektzerstörung: Was, wann und wie

In C können Objekte grob als Objekte mit Gültigkeitsbereich und dynamisch klassifiziert werden Objekte. Bereichsbezogene Objekte haben eine Lebensdauer, die an ihren umschließenden Bereich gebunden ist (z. B. lokale Variablen, globale Variablen, Klasseninstanzen), während dynamische Objekte mithilfe von Zeigern (z. B. „Neu“, „Löschen“) erstellt und zerstört werden.

Bereichsgebunden Objekte

  • Automatische Objekte: In umgekehrter Reihenfolge der Erstellung zerstört wenn der Kontrollfluss ihren Gültigkeitsbereich verlässt (z. B. Funktionsausgang, Ende eines Blocks).
  • Nicht-lokale statische Objekte: Werden nach der Ausführung von main() in umgekehrter Reihenfolge der Erstellung zerstört.
  • Lokale statische Objekte: Werden erstellt, wenn der Kontrollfluss zum ersten Mal in ihre Definition eintritt, und nach main() in umgekehrter Reihenfolge zerstört. Ausführung.
  • Basisklasse und Member-Unterobjekte: Wird in umgekehrter Reihenfolge innerhalb des Destruktors eines Objekts zerstört, gefolgt von seinen Basisklassen-Unterobjekten.
  • Array-Elemente: In absteigender Reihenfolge zerstört.
  • Vorübergehend Objekte:Erstellt aus Wertausdrücken, zerstört, wenn der vollständige Ausdruck ausgewertet wird.

Dynamische Objekte

  • Dynamische Objekte ( new Foo): Zerstört durch expliziten Aufruf von delete p.
  • Dynamische Arrays (neues Foo[n]): Zerstört durch expliziten Aufruf von delete[] p.

Ausnahmebehandlung

  • Ausnahmen werden über den Stapel zurückpropagiert und rufen Destruktoren auf zuvor erstellten automatischen Systemen auf Objekte.
  • Destruktoren sollten niemals Ausnahmen auslösen.
  • Wenn während der Objektkonstruktion eine Ausnahme auftritt, wird der zugrunde liegende Speicher freigegeben, bevor die Ausnahme ausgelöst wird.

Manuelle Objektzerstörung

Da C keinen Garbage Collector hat, müssen dynamische Objekte manuell freigegeben werden, um Ressourcen zu sparen Lecks.

Intelligente Zeiger

  • Referenzzählende Intelligente Zeiger (std::shared_ptr):Zerstören Sie automatisch das zugrunde liegende Objekt, wenn das Der letzte darauf verweisende std::shared_ptr wird zerstört.

Das obige ist der detaillierte Inhalt vonWie funktioniert die Objektzerstörung in C?. 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