Allocation dynamique d'un tableau: comment ce code peut t'il marcher ?
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 :
Code:
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]);
} |
le résultat en l’exécutant :
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.
Merci d'avance d'indiquer pourquoi le programme se comporte t'il ainsi et peut être souligner mon erreur.