Encore un prob à la con!

Résolu
bako25 Messages postés 28 Date d'inscription samedi 23 juillet 2005 Statut Membre Dernière intervention 1 septembre 2005 - 1 sept. 2005 à 12:40
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 - 1 sept. 2005 à 22:33
salut,

je declare un pointeur : char *p;

ensuite je lui affecte la valeur de la fonction malloc: p=malloc(400);

il m'affiche un message d'erreur : invalid conversion from'void* to 'char*', c'est du à quoi?

c'est encore une connerie de dev-c++???

7 réponses

vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
1 sept. 2005 à 13:24
On ne devrait jamais voir de cast devant un malloc, car si on utilise malloc c'est qu'on programme en C (pas en C++), et en C ce cast est implicite.
Tu dis donc à Dev-C++ que ton projet est en C et non en C++
Si tu veux programmer en C++, tu utilises new:
p = new char[400];
3
julienbj Messages postés 452 Date d'inscription jeudi 4 décembre 2003 Statut Membre Dernière intervention 19 décembre 2008 15
1 sept. 2005 à 12:48
Fais un cast sur ton pointeur.

p = (char *) malloc(400 * sizeof(char));

Vive le C
Tchao
[mailto:julienbj@hotmail.com Savon]
0
steve_clamage Messages postés 475 Date d'inscription dimanche 3 octobre 2004 Statut Membre Dernière intervention 11 août 2006 5
1 sept. 2005 à 18:19
+1

Et pas la peine de multiplier par "sizeof(char)", ca vaut toujours 1.
0
julienbj Messages postés 452 Date d'inscription jeudi 4 décembre 2003 Statut Membre Dernière intervention 19 décembre 2008 15
1 sept. 2005 à 18:41
Pour le sizeof, question d'habitude.
Pour le cast, je suis d'accord. Ne programmant jamais en C++, j'ai tendance à faire des cast sur mes mallocs pour prévoir mes oublis de changement de mode de compilo.
Par contre, une petite question: qu'est ce que cela change de faire un cast devant le malloc? Cela induit-il un temps d'execution plus long ou quelquechose du genre? Ou est ce seulement inutile?

Vive le C
Tchao
[mailto:julienbj@hotmail.com Savon]
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
steve_clamage Messages postés 475 Date d'inscription dimanche 3 octobre 2004 Statut Membre Dernière intervention 11 août 2006 5
1 sept. 2005 à 18:56
"Cela induit-il un temps d'execution plus long ou quelquechose du genre?"



Je ne penses pas que cela induise un temps d'execution plus long, en
tout logique un cast de pointeur à pointeur n'implique pas de
conversion. Dans le cas d'une expression sans arithmetique ca ne change
rien à priori.



"Ou est ce seulement inutile?"



Ca oui, et comme les cast sont souvent la cause de bug on aime les
éviter, donc surtout pas de cast quand ce n'est pas nécéssaire.
0
dark_naruto25 Messages postés 127 Date d'inscription mardi 23 août 2005 Statut Membre Dernière intervention 9 mai 2011
1 sept. 2005 à 22:27
Je pensais que les convertions de ce genre n'intervenait pas dans l'executable... En fait c'est juste le compilo qui en a besoin pour ne pas qu'on fasse d'erreur non ?
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
1 sept. 2005 à 22:33
Bien sur, c'est du au fait que le langage est assez fortement typé
Ca doit permettre d'éviter certaines erreurs
Quand tu programmes en assembleur, aucun contrôle de type n'est fait, donc tu peux écrire n'importe quoi sans même t'en rendre compte
0
Rejoignez-nous