Erreur pointeur de pointeur de char en C
Résolu
perato
-
perato -
perato -
Bonjour,
j'ai fait le code suivant et pour une raison inconnue que test[0] n'affiche plus "ok" alors que je n'y touche pas.
Pourtant j'ai remarque avec printf que la valeur du pointeur test[0] ne change pas.
En plus j'ai aussi remarque que test[0] affichait bien "ok" jusqu'au moment où test[1] est alloué.
j'ai fait le code suivant et pour une raison inconnue que test[0] n'affiche plus "ok" alors que je n'y touche pas.
int main()
{
char **test = malloc(1);
test[0] = malloc(3);
test[0][0] = 'o';
test[0][1] = 'k';
test[0][2] = '\0';
printf("%p\n", test[0]);
puts(test[0]); // affiche ok
test = realloc(test, 2);
test[1] = malloc(3); // a partir de cette instruction puts(test[0]) affiche une chaîne bizzare
test[1][0] = 'o';
test[1][1] = 'k';
test[1][2] = '\0';
printf("%p\n", test[0]); // le pointeur n'a pas changé de valeur
puts(test[0]); // affiche une chaîne bizzare
}
Pourtant j'ai remarque avec printf que la valeur du pointeur test[0] ne change pas.
En plus j'ai aussi remarque que test[0] affichait bien "ok" jusqu'au moment où test[1] est alloué.
1 réponse
-
yg_be Messages postés 23437 Date d'inscription Statut Contributeur Dernière intervention Ambassadeur 1 588
bonjour,
peux-tu partager ce qui est affiché? peux-tu aussi afficher le second pointeur?
Peux-tu supprimer les lignes 14 à 16?