Speichplatzverbrauch von Pointern



  • Hallo!

    Wieviel Speicherplatz verbrauchen eigentlich Pointer, in dieser Form:

    MyClass x;
    MyClass *pX = &x;
    
    cout << sizeof(x);
    cout << sizeof(pX);
    

    Wenn ich mit sizeof(...) Pointer und variable ausgeben lasse, so wird die gleiche größe ausgegeben (vermute mal, dass beim pointer die größe von der variable ausgegeben wird, auf die er pointet zeigt, und nicht der tatsächliche speicherverbrauch des pointers).

    grüße,



  • das ist abhängig von deiner hardware, normalerweise 4 oder 8 byte. Sizeof gibt tatsächlich die größe des pointers aus, vmtl. ist dein objekt zufällig genauso groß.



  • danke.



  • Aus welchen membermethoden besteht deine Klasse?

    mach doch mal einen vector ( int z.b. ) in die klasse.
    erstelle ein objekt und schreibe 1000 werte rein.

    jetzt check mal die grössen 😉



  • Und nochwas: Wenn deine Klasse nur aus einem Pointer besteht, der auf die "echten" Daten verweist, gibt sizeof nur die Größe dieses Pointers an, nicht die Größe des tatsächlich verwendeten Datenbereiches (deshalb wäre sizof(vector<>) auch immer gleich groß, egal ob der Vektor leer ist oder sich den kompletten RAM geserviert hat).


Anmelden zum Antworten