Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2248 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  Cast malloc : A faire ou pas ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Cast malloc : A faire ou pas ?

n°338023
-Slayne-
Posté le 19-03-2003 à 23:01:11  profilanswer
 

B'soir
 
Un probleme me turlupine quant à la reelle utilité du "castage" de malloc ...  
Les regles du C veulent que l'on cast le malloc, mais j'ai lu sur dans de nombreux endroits, et sur des sites très serieux, que c'etait inutile voir carrément a éviter parfois.  
 
En prenant en compte le fait que le compilateur ne fasse aucune remarque quant on ne le cast pas, quelle est la solution optimale ?? Mici !

mood
Publicité
Posté le 19-03-2003 à 23:01:11  profilanswer
 

n°338033
Taz
bisounours-codeur
Posté le 19-03-2003 à 23:10:46  profilanswer
 

Citation :

Les regles du C veulent que l'on cast le malloc


faux. en C les conversion type* <-> void* sont implicites.
 
ca peut etre dangereux de caster par ce que le cast fait taire le compilo. l'erreur la plus courante, c'est do'ublier d'inclure <malloc.h > ou <stdlib.h>, mallo c est donc manquand, le protoype par défaut est donc insérer. en castant, tu te rendras compte à l'execution que ç afoire de partout. sans cast, tu le sauras des la compil.
 
donc pas la peine de le faire, ça surcharge le code pour rien


Message édité par Taz le 19-03-2003 à 23:17:47
n°338132
-Slayne-
Posté le 20-03-2003 à 01:18:09  profilanswer
 

Quand je parlais des regles du C qui stipulaient de caster le malloc, cetait simplement parce que je lavais lu sur le bouquin ecrit par les créateurs du C ... et sinon merci bien de ton aide :)
 
Pas dautres remarques sur ce probleme ?  :(

n°338147
Taz
bisounours-codeur
Posté le 20-03-2003 à 06:44:33  profilanswer
 

oui, mias c'est là plus une affaire de gout qu'autre chose en fait
 
edit: et de compilateur: à l'époque de la rédaction du K&R, les compilos bronchaient plus facilement, alors comme dit précédemment, le cast les faisait taire. mais aujourd'hui, pas besoin, les compilos modernes sont au courant de la norme


Message édité par Taz le 20-03-2003 à 06:58:23
n°338148
Musaran
Cerveaulté
Posté le 20-03-2003 à 07:05:29  profilanswer
 

Je serai plutôt partisan de caster, car:
-Il est possible qu'une future version de C n'accepte plus la conversion de pointeur implicite.
-Ça rends le source compatible C++.
 
Je rapelle que le C actuel n'autorise plus les déclarations implicites.
 
 
De toutes façons je préfères utiliser new en C++.
 
Ok, je sors ->[]


---------------
Bricocheap: Montage de ventilo sur paté de mastic silicone
n°338357
ToxicAveng​er
Posté le 20-03-2003 à 12:05:01  profilanswer
 

http://www.isty-info.uvsq.fr/~rume [...] 2.html#q_1
 

12.1 Doit-on ou ne doit-on pas caster malloc() ?
Cette question est probablement celle qui revient le plus souvent dans la discussion. Et à chaque fois, elle engendre une longue discussion.  
Certains intervenants pensent que caster la valeur de retour de malloc() est inutile, voire dangereux. En effet, malloc() renvoie un void *. Or, en C, un pointeur void * est implicitement casté lors d'une affectation vers le type de la variable affectée. Bien sûr, expliciter le cast n'est pas interdit, et est parfois utile. Toutefois, caster le retour de malloc() risque de cacher au compilateur l'oubli du prototype de malloc(). Ce prototype se trouve dans le fichier d'en-tête <stdlib.h>. Sans lui, malloc() sera par défaut une fonction retournant un int et dont les paramètres seront du type des arguments passés, ce qui peut provoquer de sérieux bugs.  
 
La véritable erreur est l'oubli du fichier d'en-tête <stdlib.h>, et non pas le cast de malloc() en lui même. Mais le cast de malloc() risque de cacher au compilateur cette erreur. À noter qu'il existe des outils de vérification de code et des options sur la plupart des compilateurs4 qui permettent de détecter ce genre d'erreur.  
 
D'autres intervenants jugent qu'il faille tout de même caster le retour de malloc(), afin de conserver une compatibilité avec d'anciens compilateurs pré-ANSI, ou pour intégrer plus facilement le code avec C++. Evidemment, les programmeurs avertis sauront dans quelles situations il est utile ou non de caster les void *.


Message édité par ToxicAvenger le 20-03-2003 à 12:05:31

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  Cast malloc : A faire ou pas ?

 

Sujets relatifs
[C/C++]Petit problème de malloc[C] logiciel pour verifier que tout l'espace alloué par des malloc etc
C fonction malloc et realloc, je comprend pas toutMalloc sous Windows
probleme de cast dynamique avec heritage etc(malloc : question toute bete)
cast, conception, compliqué à résumer, venz donc lire ! :Dcast int->string
Cast de gcc Linux par rapport à Forte sous SolarisC++ operator sans cast
Plus de sujets relatifs à : Cast malloc : A faire ou pas ?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR