Pb avec pointeur triple

Résolu
cs_snake57 Messages postés 204 Date d'inscription vendredi 19 novembre 2004 Statut Membre Dernière intervention 1 novembre 2011 - 15 mars 2009 à 17:32
cs_snake57 Messages postés 204 Date d'inscription vendredi 19 novembre 2004 Statut Membre Dernière intervention 1 novembre 2011 - 16 mars 2009 à 13:38
Bonjour,

j'ai essayé de passer par les pointeurs triples, mais j'arrive pas a allouer, la compilation ne passe pas, pouvez vous m'aider svp?


Voici mon code :

const int nbrCarreLigneTotal=22;
const int nbrCarreColonneTotal=11;

SDL_Surface ***carre={NULL};

carre = malloc(nbrCarreLigneTotal*sizeof(*carre));
for( i = 0; i < nbrCarreLigneTotal; ++i)
{
carre[i] = malloc(nbrCarreColonneTotal*sizeof(**carre));
}

le compilo me bloc sur les deux malloc, sur le premier j'ai l'erreur :
"error: invalid conversion from `void*' to `SDL_Surface***'"

et sur le second malloc j'ai :
"error: invalid conversion from `void*' to `SDL_Surface**'"

Je précise que je fais sa en C.

2 réponses

cs_juju12 Messages postés 966 Date d'inscription samedi 3 avril 2004 Statut Membre Dernière intervention 4 mars 2010 4
15 mars 2009 à 18:09
manque juste les casts :
carre = (SDL_Surface***)malloc(nbrCarreLigneTotal*sizeof(*carre));
carre[i] = (SDL_Surface**)malloc(nbrCarreColonneTotal*sizeof(**carre));

ceci dit, on évite en général d'appeler 15000 fois malloc : on l'appelle une seule fois avec la taille totale (L*C+L) puis on initialise les pointeurs : carre[i]=(SDL_Surface**)(carre+L+C*i).
3
cs_snake57 Messages postés 204 Date d'inscription vendredi 19 novembre 2004 Statut Membre Dernière intervention 1 novembre 2011
16 mars 2009 à 13:38
merci c'était bien sa
0
Rejoignez-nous