


Wo werden Verweise auf Objekte gespeichert, wenn sie im Stapel oder im Heap erstellt werden?
Nov 27, 2024 am 01:52 AMObjekterstellung auf dem Stapel oder Heap:
Es stellt sich die Frage: Wenn ein Objekt auf dem Stapel oder auf dem Heap erstellt wird, wo sind Referenzen? zu den tatsächlich gespeicherten Objekten?
In C wird die Objektspeicherung durch ihren Kontext, nämlich ihre Speicherung, bestimmt Dauer:
Objekt o erstellt ein Objekt mit:
- Automatische Speicherung: Wenn lokal innerhalb einer Funktion deklariert, befindet sich das Objekt auf der Stapel.
- Statischer Speicher: Sofern bei deklariert Namespace- oder Dateibereich, das Objekt wird in einem dedizierten Speicherbereich außerhalb des Stapels oder Heaps platziert.
- Mitgliedsvariable: Wenn als Unterobjekt innerhalb eines anderen Objekts deklariert, Es erbt die Speicherdauer des enthaltenden Objekts.
Object* o erstellt einen Zeiger mit automatischer Funktion Speicher.
Zeiger werden wie jedes andere Objekt auf dem Stapel zugewiesen. Ihre Speicherdauer wird durch ihren Kontext bestimmt, nicht durch den Initialisierungsausdruck.
Zum Beispiel im folgenden Codefragment:
struct Foo { Object o; }; Foo foo, f; Foo* p = new Foo; Foo* pf = &f;
- foo.o hat auch keinen statischen Speicher weder auf dem Stapel noch auf dem Heap, da foo selbst über statischen Speicher verfügt.
- f.o verfügt über einen automatischen Speicher und befindet sich auf dem Stapel, ebenso wie f über einen automatischen Speicher verfügt Speicher.
- p->o verfügt über dynamischen Speicher auf dem Heap, da *p über dynamischen Speicher verfügt.
- pf->o und f.o verweisen auf dasselbe Objekt, da pf direkt zeigt bis f.
Zusammenfassend lässt sich sagen, dass der Speicherort eines Objekts ausschließlich von seinem Kontext abhängt, während Zeiger immer auf dem Stapel zugeordnet sind, aber auf Objekte unterschiedlichen Speichers verweisen können Dauer.
Das obige ist der detaillierte Inhalt vonWo werden Verweise auf Objekte gespeichert, wenn sie im Stapel oder im Heap erstellt werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heißer Artikel

Hot-Tools-Tags

Heißer Artikel

Heiße Artikel -Tags

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

C Sprachfunktionsformat -Buchstaben -Fall -Konvertierungsschritte

GULC: C -Bibliothek von Grund auf neu gebaut

Welche Werte sind von C -Sprachfunktionen zurückgegeben? Was bestimmt den Rückgabewert?

Wie funktioniert die C -Standard -Vorlagenbibliothek (STL)?

Was sind die Definitionen und Aufrufregeln von C -Sprachfunktionen und was sind die?

Wo ist der Rückgabewert der C -Sprachfunktion im Speicher?

eindeutiger Gebrauch und Phrasenfreigabe

Wie benutze ich Algorithmen aus der STL (sortieren, finden, transformieren usw.) effizient?
