Heim Backend-Entwicklung C++ Wo werden Verweise auf Objekte gespeichert, wenn sie im Stapel oder im Heap erstellt werden?

Wo werden Verweise auf Objekte gespeichert, wenn sie im Stapel oder im Heap erstellt werden?

Nov 27, 2024 am 01:52 AM

Where are References to Objects Stored when Created on the Stack vs. the Heap?

Objekterstellung 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;
Nach dem Login kopieren
  • 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!

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

Heiße Artikel -Tags

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

C Sprachfunktionsformat -Buchstaben -Fall -Konvertierungsschritte C Sprachfunktionsformat -Buchstaben -Fall -Konvertierungsschritte Mar 03, 2025 pm 05:53 PM

C Sprachfunktionsformat -Buchstaben -Fall -Konvertierungsschritte

GULC: C -Bibliothek von Grund auf neu gebaut GULC: C -Bibliothek von Grund auf neu gebaut Mar 03, 2025 pm 05:46 PM

GULC: C -Bibliothek von Grund auf neu gebaut

Welche Werte sind von C -Sprachfunktionen zurückgegeben? Was bestimmt den Rückgabewert? Welche Werte sind von C -Sprachfunktionen zurückgegeben? Was bestimmt den Rückgabewert? Mar 03, 2025 pm 05:52 PM

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

Wie funktioniert die C -Standard -Vorlagenbibliothek (STL)? Wie funktioniert die C -Standard -Vorlagenbibliothek (STL)? Mar 12, 2025 pm 04:50 PM

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

Was sind die Definitionen und Aufrufregeln von C -Sprachfunktionen und was sind die? Was sind die Definitionen und Aufrufregeln von C -Sprachfunktionen und was sind die? Mar 03, 2025 pm 05:53 PM

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

Wo ist der Rückgabewert der C -Sprachfunktion im Speicher? Wo ist der Rückgabewert der C -Sprachfunktion im Speicher? Mar 03, 2025 pm 05:51 PM

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

eindeutiger Gebrauch und Phrasenfreigabe eindeutiger Gebrauch und Phrasenfreigabe Mar 03, 2025 pm 05:51 PM

eindeutiger Gebrauch und Phrasenfreigabe

Wie benutze ich Algorithmen aus der STL (sortieren, finden, transformieren usw.) effizient? Wie benutze ich Algorithmen aus der STL (sortieren, finden, transformieren usw.) effizient? Mar 12, 2025 pm 04:52 PM

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

See all articles