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 : 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]);
}
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.