
Envoyé par
Sve@r
On pourrait toutefois se dire "oui mais le cast ne dérange personne". Hé ben si, malheureusement il dérange...
Autre fois je déconseillais aussi le cast du retour de malloc(), mais aujourd'hui je ne vois aucun argument qui tient la route, pour moi c'est plus une question d'habitude.

Envoyé par
Sve@r
Toutefois, et c'est là le plus important, le cast, si on le met, force le compilateur à faire la conversion même si le type retourné par malloc n'est pas "void *".
malloc retourne toujours un void*.
void *malloc(size_t size);

Envoyé par
Sve@r
Si par exemple on oublie d'inclure <st
dlib.h>, malloc ne sera alors plus prototypé. Le compilo, en le voyant pour la première fois dans le code le considèrera alors de type "int" (type par défaut) et transformera alors tous ses retours en int. Puis, le cast transformera cet int en pointeur sans que le compilo n'y trouve à redire quoi que ce soit.
Alors ça marchera tant que les int et les pointeurs ont la même taille. Puis le jour où ça changera



Si ton compilateur est incapable de te prévenir, alors il faut le changer d'urgence ! Au pire il suffit de le régler en fouillant dans les options de compilations (niveau d'alerte).
P.S: Je n'ai jamais casté le retour de malloc().
Partager