Klasse member erstellt am stack oder heap?
Müssen wissen, ob so eine 3d-matrix erstellt, in dem stack oder auf dem heap, und wenn seine auf den Stapel, wie zu neuen und Initialisierung default-Werte korrekt (memset)
class Matrix {
protected:
int n[9000][420]; //is stack or heap if VVV is pointer?
};
void main()
{
Matrix* t = new Matrix(); //created on heap
}
- Nicht, dass die ganz davon abhängen, ob Sie
new
oder nicht? Was ist deine eigentliche Frage? - Gut ist es stillschweigend über den Haufen, da
t
ist auf dem heap, und es ist ein Mitglied der Klasse. Ich kenne eine ähnliche, aber lokale scope-variable wäre einfach gestapelt werden. n
ist ein Teil vonMatrix
wie Ihre Leber ist ein Teil von dir. Wenn Sie auf den "heap", dann ist die Leber auch auf dem "heap".t
ist nicht "über den Haufen".t
ist eine lokale automatische Variablen in der Funktion Umfang dermain
.- gekennzeichnet als anstößig. Auch, Kerrek der Punkt ist, dass
t
ist eine Zeiger-variable mit automatischer Speicherung-Dauer ("auf dem Stapel"), wo, wie dieMatrix
- Instanz erstellt, indem Ihrnew
- Anweisung hat die dynamische Speicherung-Dauer ("über den Haufen"). - Ok, gut er ist richtig und Sie sind falsch. Die variable
t
ist ein Zeiger, welcher zugeordnet wird, mit automatic storage duration, d.h., auf dem "stack". Was es Punkte zu dynamisch reserviert auf dem heap. - Nicht sicher, was du damit meinst. Beziehen Sie sich auf die Krankheit asperger-Syndrom, oder Hamburger, die kommen aus dem hinteren Ende von einem Geschöpf? So oder so stehe ich verwirrt... meinst du, dass solch eine Unterscheidung ist irrelevant? Ich finde es schwer zu glauben, dass jemand auch nur einen kleinen Hauch von Erfahrung halten würde, die Meinung.
- Wenn Sie möchten, eine echte Antwort dann Pedanterie ist notwendig; würden Sie bevorzugen, wir Gaben vage/falsche Antworten in einer Bemühung zu vermeiden, die details, auch wenn diese? Ich denke nicht.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Kommt es darauf an, wie man erstellen Sie das übergeordnete Objekt.
Heaps und stacks sind natürlich eine Implementierung detail, aber in diesem Fall denke ich, es ist fair zu geben.
c1
undc2
sind bei static statt " automatische Speicherung, aber!Array
n
ist ein direktes Mitglied der KlasseMatrix
, so dass jede Objekt-Instanz dieser Typ enthält die Daten fürn
direkt. Insbesondere, wenn Sie ein dynamisches Objekt in dynamisch reservierten Speicher, dann das array wird dort sein; und wenn Sie erstellen eine automatische Objekt, so wird das array befinden sich die automatischen Speicher, wie auch.