Anzahl der Elemente in dynamisch erzeugtem Array ermitteln

08/06/2009 - 21:42 von Domenic Laritz | Report spam
Hallo zusammen!

Die Anzahl bei "normal" definierten Arrays ermitteln ist ja einfach:

int array[10];
printf("%d", sizeof(array)/sizeof(int));

Wie geht das aber bei dynamisch erzeugten Arrays?
Folgender Code funktioniert nàmlich nicht:

int *dyn_array = (int *)malloc(10*sizeof(int));
printf("%d", sizeof(dyn_array)/sizeof(int));
 

Lesen sie die antworten

#1 Claudio Carobolante
08/06/2009 - 22:12 | Warnen spam
Domenic Laritz schrieb:

Die Anzahl bei "normal" definierten Arrays ermitteln ist ja einfach:

int array[10];
printf("%d", sizeof(array)/sizeof(int));



Wenn schon, dann wie folgt. Das soll ja auch noch funktionieren, wenn
der Typ von array sich àndern sollte.

printf("%d", sizeof(array)/sizeof(*array));

Wie geht das aber bei dynamisch erzeugten Arrays?
Folgender Code funktioniert nàmlich nicht:

int *dyn_array = (int *)malloc(10*sizeof(int));
printf("%d", sizeof(dyn_array)/sizeof(int));



Gar nicht. Du bist selbst dafür verantwortlich, Dir die Größe zu
merken, falls Du sie noch brauchst.

http://www.dclc-faq.de/kap3.htm#3.12

Ich will jetzt nicht die x-te Diskussion über den Cast vor malloc
anfangen. Achte bitte darauf, <stdlib.h> für malloc einzubinden.

cc

Ähnliche fragen