Mögliche Duplizieren:
newbie questions about malloc and sizeofMit sizeof() auf malloc'd Speicher
Ich versuche, Strings in ein Programm zu lesen. Als ich bemerkte, dass die Saiten manchmal beschädigt wurden, habe ich versucht, den folgenden Code:
void *mallocated = malloc(100);
printf("sizeof(mallocated) = %d\n", sizeof(mallocated));
Nach meinem Programm, war die Größe von mallocated
8
, obwohl ich 100 Byte für zugeordnet. Wenn ich versuche, eine Zeichenfolge länger als 8 Byte zu speichern, verschwindet daher alles nach dem 8. Byte manchmal. Warum passiert das und wie kann ich es verhindern?
sizeof (mallocated) gibt Ihnen die Größe von void *, die 8 Bytes auf Ihrem 64-Bit-System ist. Wie weisen Sie dieser Variablen einen String zu, mit strcpy? – tur1ng
Siehe: http://stackoverflow.com/questions/1533519/newbie-questions-about-malloc-and-sizeof – Shog9
Ihre Schlussfolgerung ist auch falsch, alles nach dem 8. "Byte" geschrieben (nicht Bit) nicht zufällig verschwinden manchmal. – Blindy