R
Original erstellt von cansi:
*s heist jan nicht (short) malloc !
Casting != Dereferenzieren
Der Rückgabewert von malloc ist void* und das kann der Compiler implizit Casten. Jetzt denkst du wahrscheinlich "haha, dann ist es doch egal ob ich den Cast nehme oder nicht". Das ist es aber nicht, da du zB vergessen könntest stdlib.h zu includieren und dem Compiler keine passende Funktionsdefinition vorliegt, nun gibt es die explizit int Regel bei C (oder gab es, weiss gar nicht ob das für C99 noch gilt)dh., dass der Compiler von so einer definition ausgeht int malloc(...), wenn nun aber auf einer Platform sizeof(int)!=sizeof(void*) ist, dann hast du ein Problem! Deswegen lieber den Cast weglassen. Da C++ diesen Cast verlangt, ist es leider sehr gebräuchlich, obwohl man unter C++ lieber new nehmen sollte anstelle malloc!