R
sizeof(char) ist immer 1, weil sizeof die größe eines anderen Typen in chars mist
aus dem Standard, falls du das immer noch zu trollig hälst
When applied to an operand that has type char, unsigned char, or signed char, (or a qualified version thereof) the result is 1.
6.5.3.4 The sizeof operator ISO/IEC 9899:1999 (E) (auch als C99 bekannt)
außerdem kann es zu einem Problem kommen, wenn man malloc castet und einen nicht C99 Compiler benutzt und man vergessen hat stdlib.h zu includieren. Weil bei den C Spezifikationen/Standards vor C99 wurde wenn die Deklaration fehlt immer ein int angenommen
int main(void) {
char *ptr=(char*)malloc(2);
}
dann wurde malloc als wie folgt deklariert angenommen
int malloc(int);
wenn du nun eine Platform hast, wo sizeof(char*) größer als sizeif(int) ist, dann wird ein Teil des Pointers abgeschnitten und du hast einen Pointer, der wild im Speicher rumzeigt, ob wohl das eigentlich nicht sein kann.
Deswegen castet man malloc nicht!
Das sollte auch kein komplett lauffähger Code sein, sondern lediglich als
Denkanreiz dienen.
mein Kommentar auch. Ich will euch ja nur vor Fehlern bewahren.