[language C]
Fermé
calidor
-
18 août 2006 à 14:38
Darshu Messages postés 303 Date d'inscription lundi 30 janvier 2006 Statut Membre Dernière intervention 3 avril 2008 - 18 août 2006 à 16:58
Darshu Messages postés 303 Date d'inscription lundi 30 janvier 2006 Statut Membre Dernière intervention 3 avril 2008 - 18 août 2006 à 16:58
3 réponses
Il doit manquer un cast, modifi ta ligne par :
aod->ao_string_dups = (char **) malloc(sizeof(char**) * (*pcmdc + 1));
Darshu
Messages postés
303
Date d'inscription
lundi 30 janvier 2006
Statut
Membre
Dernière intervention
3 avril 2008
64
18 août 2006 à 16:29
18 août 2006 à 16:29
Je ne suis pas d'accord avec toi Radek pour le cast ! Il y en a peut-être besoin, mais c'est un char ***. Soit
Un moyen simple pour s'en souvenir : le cast a toujours une * de plus que le sizeof ;)
aod->ao_string_dups = (char ***) malloc(sizeof(char**) * (*pcmdc + 1));En effet, pour un char*, on fait un malloc(sizeof(char)*n). Pour un char** c'est donc malloc(sizeof(char*)*n) et donc pour un char*** on se retrouve avec malloc(sizeof(char**)*n).
Un moyen simple pour s'en souvenir : le cast a toujours une * de plus que le sizeof ;)
Darshu
Messages postés
303
Date d'inscription
lundi 30 janvier 2006
Statut
Membre
Dernière intervention
3 avril 2008
64
18 août 2006 à 16:58
18 août 2006 à 16:58
Tout à fait, mais dans ce cas le malloc ne peut être que sur un sizeof(char *) ... Sinon il y a une faute de logique derrière tout ça ;)
Bref, il a résolu son problème mais je suis d'accord avec toi :]
Bref, il a résolu son problème mais je suis d'accord avec toi :]