Groesse von Array herausbekommen



  • Hi,

    ich will die groesse von einem Array herausbekommen bei diesem Array klappt das einwandfei:

    #define LAENGE  (sizeof(zahlen) /  sizeof (zahlen[0]))
    int zahlen[10];
    

    aber wie bekomme ich die Groesse von diesem Array heraus das auf dem Heap liegt ?

    #define ???????????????
    
    int *zahlen = new int[10];
    


  • Geht nicht.



  • Bashar schrieb:

    Geht nicht.

    Schade. Kann man das den irgendwo nochmal genau nachlesen warum es nicht geht ?



  • Die Sprachspezifikation schreibt nicht vor, wie die Längeninformation eines dynamisch allozierten Speicherblockes abgelegt wird, noch definiert sie eine Funktion oder einen Operator, mit dem man diese Information abfrage könnte. Das stellt auch alles nicht wirklich ein Problem dar, schließlich hast du ja im new-Ausdruck die Größe angegeben. Nichts hält dich davon ab, dir die Größe zu merken.



  • Hallo,
    wobei man noch auf einen wichtigen Punkt hinweisen könnte:

    int zahlen[10];

    Das *ist* ein Array. Ein solches Array kann in vielen vielen Situationen (die drei Ausnahmen findet man in der Signatur von SG1) in einen Zeiger auf das erste Element "zerfallen".

    int *zahlen = new int[10];

    Das wiederum *ist* ein Zeiger. Der Zeiger zeigt zwar auf ein Array, er ist selbst aber keins. Deshalb kann sizeof(zahlen) auch nicht die Größe eines Arrays liefern.

    sizeof(*zahlen) kann aber auch nicht die gewünschte Information liefern, da sizeof zur Compilezeit ausgewertet wird. Der Zeiger im Laufe des Programms aber überall hinzeigen kann.

    Naja, dass nur als Ergänzung.



  • du kannst ja vielleicht ein vector nehmen und dann .size() benutzen.


Anmelden zum Antworten