Heim > Backend-Entwicklung > C++ > Hauptteil

Neue vs. nicht neue Instanziierung in C: Was sind die Hauptunterschiede?

Linda Hamilton
Freigeben: 2024-11-24 06:35:11
Original
906 Leute haben es durchsucht

New vs. Non-new Instantiation in C  : What are the Key Differences?

Instanziierungsunterschiede: neu vs. nicht neu

Diese Frage untersucht die funktionalen Unterschiede zwischen der Instanziierung eines Objekts mit dem neuen Operator und der Instanziierung desselben Ohne neu.

Nicht neu Instanziierung

Time t(12, 0, 0); // t is a Time object
Nach dem Login kopieren

Diese Instanziierung erstellt ein Zeitobjekt mit dem Namen t, das sich auf dem Stapel befindet (in den meisten Implementierungen). Es behält seine Existenz innerhalb des aktuellen Bereichs.

neue Instanziierung

Time *t = new Time(12, 0, 0); // t is a pointer to a dynamically allocated Time object
Nach dem Login kopieren

Diese Instanziierung reserviert dynamisch Speicher mithilfe des Operators new() und ruft dann den Konstruktor Time( ). Die Adresse des zugewiesenen Speicherblocks wird in t gespeichert. Das Time-Objekt befindet sich (normalerweise) auf dem Heap. Später im Programm muss t gelöscht werden, um den zugewiesenen Speicher freizugeben und Speicherlecks zu verhindern.

Funktionelle Unterschiede

Neben dem offensichtlichen Unterschied in der Speicherverwaltung gibt es keine wesentliche funktionale Unterschiede zwischen den beiden Instanziierungen. Beide Methoden erstellen Instanzen der Time-Klasse mit den angegebenen Parametern.

Hinweis

Die Begriffe „Stack“ und „Heap“ werden im Allgemeinen verwendet, um die Speicherorte von anzugeben Stack-zugewiesene bzw. Heap-zugewiesene Objekte. Der C-Standard schreibt diese Unterscheidungen jedoch nicht basierend auf Speicherorten vor. Stattdessen werden Objekte anhand ihrer Speicherdauer kategorisiert, was möglicherweise mit den herkömmlichen Konzepten von Stapel und Heap übereinstimmt oder auch nicht.

Das obige ist der detaillierte Inhalt vonNeue vs. nicht neue Instanziierung in C: Was sind die Hauptunterschiede?. 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