In diesem Fall befindet sich X, da "objectOnHeap" auf dem Heap ist, auch auf dem Heap, obwohl es nicht speziell neu erstellt wurde? Und in diesem Fall ist Y auf dem Stapel zugeordnet (und natürlich außerhalb des Geltungsbereichs), richtig?
Ich wundere mich, wenn ich meine Drähte gekreuzt habe, wenn ich versuche, mir vorzustellen, wie Objekte im Speicher gespeichert werden.
Ja. Es ist auf dem Haufen. Grundsätzlich ist der einem Objekt auf dem Heap zugewiesene Speicherplatz groß genug, um alle seine Mitgliedsvariablen aufzunehmen.
Ja, es ist auf dem Haufen.
Einige Details: Wenn Sie den Operator "new" verwenden, teilt der Compiler dem Heap genügend Speicherplatz für die Klasse zu, einschließlich des gesamten für alle Membervariablen benötigten Speicherplatzes (der auch Klassen sein kann. In diesem Fall muss die Größe der Klasse sein.) berechnet, usw.).
Danach wird der Konstruktor für die Datenmemberklassen und dann für die Klasse selbst aufgerufen.
Wenn Sie nicht explizit Speicher auf dem Heap zuweisen (normalerweise mit dem neuen Operator oder einer Funktion, die dies für Sie tut), wird der Speicher wie die Variable y in Ihrem Beispiel auf dem Stack zugewiesen / p>
Tags und Links c++