Bonjour, pour mieux me familiariser avec le language C (étant débutant) je me suis lancé dans l'écriture d'un algorithme qui recherche des fichier dans un système. Mais pour cela, j'ai besoin d'allouer dynamiquement un tableau contenant des chaines de caractères. J'ai donc fait ceci :
le résultat en l’exécutant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 #include <stdio.h> #include <stdlib.h> int main() { char **tableau = malloc(sizeof(int) * 10); // alloue un tableau de 10 pointeurs tableau[0] = "chaine1"; //OK, on attribue la chaine à l'emplacement zéro tableau[300] = "chaine2"; //Cette ligne n'est pas censée marcher /* on affiche les chaines */ puts(tableau[0]); puts(tableau[300]); }
j'ai découvert cela avec une erreur mais ça m'a semblé bizarre que le programme continue de fonctionner normalement, avec aucune erreur alors que j'ai pourtant dépassé la limite du tableau (de 10 cases). J'ai essayé avec plusieurs appareils, même résultat.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 chaine1 chaine2
Merci d'avance d'indiquer pourquoi le programme se comporte t'il ainsi et peut être souligner mon erreur.
Partager