Array größe



  • Hallo weiss jemand wie man die größe eines Array bestimmen kann über
    Assembler in C
    wäre nett mit Quellcode.

    Ich mein z.B man allokiert sich speicher
    welches sich erst zur Laufzeit entscheidet. Ob es dann eine Methode gibt die größe
    festzustellen.



  • Wieso glaubst du, dass dir bei diesem Problem Assembler-Code helfen könnte?



  • Ne bessere Idee?



  • MANDY schrieb:

    Ne bessere Idee?

    Wenn du den Speicher dynamisch allozierst, hast du irgendwo schon die Größe. Das beste wäre, wenn du die in einer zusätzlichen Variablen speicherst.

    Alles andere wäre nicht portabel. Falls du so eine Lösung suchen solltest, müsstest du zumindest Betriebssystem, Hardware und Compiler nennen.



  • So Betriebsystem Windows XP,P4,Visual Studio 7.0
    Ich will eben keine neue Variable haben und das dort speichern



  • Wie free() oder delete die richtige Größe ermitteln, ist auf jeden Fall Betriebsgeheimnis des Compilers - wenn du dich darauf verlassen willst, mußt du dich tief ins Innere des Systems vorwagen. Die einzige portable Lösung deines Problems wird es wohl sein, die Größe selber mitzuschreiben.

    Und wenn du etwas gegen eine Zusatzvariable hast - reservier dir einfach vier Byte zusätzlich und schreib vor deinen eigenetlichen Daten die Größe des Feldes:

    data_t* data = (char*)malloc(n*sizeof(data_t)+sizeof(int)) + sizeof(int);
    *( (int*)data -1) = n;
    

    (ich weiß, das sieht katastrophal aus - und ist nebenbei ungetestet und ohne Garantie)


Anmelden zum Antworten