Char** conditional jump or move depends on uninitialised value
Résolu
Xtazy78
-
Xtazy78 -
Xtazy78 -
Bonsoir,
Je vous explique mon probleme :
J'ai une fonction qui utilise un char **alphabet cependant valgrind me met une erreur de contexte comme quoi alphabet n'est pas initialise.
PS : Je veux utiliser un char ** et non pas un char *
Je vous explique mon probleme :
J'ai une fonction qui utilise un char **alphabet cependant valgrind me met une erreur de contexte comme quoi alphabet n'est pas initialise.
char **alphabet = malloc(sizeof (char) * 100);
int i = 26;
int nb = 0;
while (i >= 0)
{
alphabet[nb][0] = 'a' + nb;
nb++;
i--;
}
PS : Je veux utiliser un char ** et non pas un char *
9 réponses
-
Bonjour
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; } -
-
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 -
Mec mon but etait d'utiliser un char**...
Il suffit juste d'utiliser calloc mon pote !
man calloc si tu veux, mais en gros c'est un malloc plus des allocations sur chaque case memoire reservee.
Bisous -
-
-
-