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 von Matrix 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 der main.
  • gekennzeichnet als anstößig. Auch, Kerrek der Punkt ist, dass t ist eine Zeiger-variable mit automatischer Speicherung-Dauer ("auf dem Stapel"), wo, wie die Matrix - Instanz erstellt, indem Ihr new - 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.

InformationsquelleAutor user1139252 | 2012-01-31
Schreibe einen Kommentar