Bonjour,
Suite à cette discussion, http://www.developpez.net/forums/d85...-regdeletekey/ , je dois allouer dynamiquement un tableau de type char à deux dimensions pour y stocker X chaînes de caractères.
J'ai donc créé une fonction pour le faire :
Les 'lignes+1' et 'colonnes+1' répondent au besoin de mon programme : je dois augmenter de 1 'lignes' et de 1 'colonnes'.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 char **AllocateMemoryForBuffer(int lignes, int colonnes) { char **TabRes2d; int i; TabRes2d = malloc((lignes+1)*(sizeof(char))); for (i = 0; i < colonnes+1; i++) TabRes2d[i] = malloc((colonnes+1)*(sizeof(char))); printf("\nlignes = %d\n", lignes+1); printf("colonnes = %d\n\n", colonnes+1); return (TabRes2d); }
Déjà, j'aimerais savoir si mon allocation de tableau est correcte ou pas.
Le problème survient lors du remplissage du tableau : j'arrive à remplir les 5, 6 premières lignes, puis ça plante sur la septième. L'errorlevel de mon programme est -1073741819.
Le tableau 2D type char est défini dans une structure. J'alloue la mémoire comme ceci :
La structure :ptr_registre->TabOfSubkeysToDelete = AllocateMemoryForBuffer(ptr_registre->NbrSuKeys, ptr_registre->MaxSubKeySize);
J'envoie un pointeur vers cette structure à la fonction chargée de remplir ce tableau et voici le code de remplissage ci-dessous :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 struct s_registre { .............. char **TabOfSubkeysToDelete; }; struct s_registre t_registre; struct s_registre *ptr_registre; ptr_registre = &t_registre;
Et count est incrémenté de 1 à chaque fois, dès qu'on lit une autre clé.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 while (a < strlen(path_key)) { ptr_registre->TabOfSubkeysToDelete[count][a] = path_key[a]; a++; } ptr_registre->TabOfSubkeysToDelete[count][a] = '\0';
Le remplissage du tableau commence bien mais plante à ptr_registre->TabOfSubkeysToDelete[6]. Si je n'incrémente pas count, c'est la première ligne qui est remplie à chaque fois, et là le programme plante lors du douzième remplissage, même erreur.
Ca fait bien 3h que je suis sur le problème, j'ai beau repartir à 0 niveau code, je retombe sur le même erreur : j'en déduis que je me suis bien planté quelque part.
Merci par avance de votre aide pour m'aider à trouver.
![]()
Partager