Char** conditional jump or move depends on uninitialised value
Résolu
Xtazy78
-
Xtazy78 -
Xtazy78 -
A voir également:
- Char** conditional jump or move depends on uninitialised value
- Or - Guide
- Move mouse - Télécharger - Utilitaires
- Doodle jump - Télécharger - Arcade
- X64 or x86 ✓ - Forum Windows
- Enter administrator password or power on password - Forum Windows
9 réponses
Bonjour
C'est très mal parti...
Tu te bases sur la taille d'un simple char pour initialiser alphabet, alors qu'alphabet va pointer sur des pointeurs ...
Ce sont alphabet[0], alphabet[1].. qui vont pointer sur des caractères
Quand tu utilises un char **, ta variable ne pointe pas sur un tableau à 2 dimensions.
Elle pointe sur un tableau de pointeurs qu'il faut allouer et initialiser
Ensuite, chacun de ces pointeurs est un char * classique (qu'il faut aussi allouer et initialiser)
pour initialiser (pas testé) :
char **alphabet = malloc(sizeof (char) * 100);
C'est très mal parti...
Tu te bases sur la taille d'un simple char pour initialiser alphabet, alors qu'alphabet va pointer sur des pointeurs ...
Ce sont alphabet[0], alphabet[1].. qui vont pointer sur des caractères
Quand tu utilises un char **, ta variable ne pointe pas sur un tableau à 2 dimensions.
Elle pointe sur un tableau de pointeurs qu'il faut allouer et initialiser
Ensuite, chacun de ces pointeurs est un char * classique (qu'il faut aussi allouer et initialiser)
pour initialiser (pas testé) :
#define NBCHAINES 26 #define NBCARACTERES 10 char **alphabet = malloc(sizeof (char *) * NBCHAINES); int k; for (k=0; k<NBCHAINES; k++) { alphabet[k]=malloc(sizeof(char) * NBCARACTERES); alphabet[k][0]='a'+k; }
Xtazy78
Merci :)
Je t'ai pas mis les includes
void free_alphabet(char **alph) { int i = 0; while (alph[i] != NULL) { free(alph[i]); i++; } free(alph); }
int main (void) { char **alphabet = malloc(sizeof (char) * 100); int i = 26; int nb = 0; while (i >= 0) { alphabet[nb][0] = 'a' + nb; nb++; i--; } free_alphabet(alphabet); return (0); }
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question