Speicherverbrauch von Pointern...



  • Tach nochmal,

    Also ein Ptr belegt doch immer die gleiche Menge an Speicher oder?

    ALSO BSP:

    struct DEMO
    {
        char szBuf[100];
        long lValueLong;
        int  iValueInt;
    };
    
    DEMO* pDemo;
    int* piValue;
    

    ⚠ ➡ Ich meine nicht sizeof(), sondern die Belegung der Adressen der Zeiger ...
    Danke... 😉 👍

    MfG CodeFinder



  • 😕

    Zeiger haben immer 4 Byte auf 32 Bit, 8 Byte auf 64 Bit, die Struktur selbst ist natürlich so groß wie die enthaltenen Daten.

    Wie war die Frage? 🕶



  • Der Pointer selber belegt normalerweise immer gleich viel Speicher (ist aber afaik nicht vorgeschrieben) - allerdings sind die Daten, auf die er zeigt, unterschiedlich groß.



  • Danke Frage schon beantwortet, bzw. meine Aussagen bestätigt 😉

    allerdings sind die Daten, auf die er zeigt, unterschiedlich groß.

    war mir klar 😉

    ok THX!

    MfG CodeFinder



  • Methoden-Pointer brauchen gewöhnlich die doppelte Menge an Speicher:

    #include <iostream>
    using namespace std;
    
    class foo{};
    
    int main()
    {
        void(foo::*bar)();
        int *x;
        cout << sizeof(bar) << endl;
        cout << sizeof(x) << endl;
    }
    

  • Mod

    <strong>ACHTUNG!!!</strong> schrieb:

    Methoden-Pointer brauchen gewöhnlich die doppelte Menge an Speicher:

    #include <iostream>
    using namespace std;
    
    class foo{};
    
    int main()
    {
        void(foo::*bar)();
        int *x;
        cout << sizeof(bar) << endl;
        cout << sizeof(x) << endl;
    }
    

    dabei ist zu beachten, dass einige compiler die angewohnheit haben, memberfunktionspointer nicht-standardkonform zu optimieren (was man per compilerschalter abschalten kann). für den größten zeiger braucht man dann virtuelle basen und virtuelle memberfunktionen.


Anmelden zum Antworten