Dans le code suivant, lorsque j'essaie de libérer les éléments individuels du tableau 2D de caractères (ie 2dArray [l]), j'ai une erreur (_crtisvalidheappointer (puserdata) dbgheap. c): Une idée sur la raison de l'erreur?Tableau 2d gratuit de char avec realloc
#include<stdio.h>
int main(){
char ** TwodArray= NULL;
int k = 0;
int j = 0;
do{
k++;
for (int i= 0; i<10; i++){
j++;
TwodArray=(char**)realloc(TwodArray, (j+1)*10*sizeof(char*));
TwodArray[j-1]=(char*)malloc(10 *sizeof(char));
TwodArray[j-1] = "abcdefgh";
....
}
}while(k<3)
// free the memory
for (int l = 0; l < j; l++){
if (TwodArray[l] != NULL)
free(TwodArray[l]); // here I get the error!
}
free(TwodArray);
return 0;
}
S'il vous plaît nous montrer quelques * Code réel *. –
@JoachimPileborg Le vrai code est complexe et très long, j'ai essayé de le rendre simple ici! Il n'y a pas d'erreur de compilation mais l'erreur d'exécution comme je l'ai mentionné dans le post: '_crtisvalidheappointer (puserdata) dbgheap.c – Homer
Eh bien @Homer le problème est que ce code n'est même pas c. '2dArray' est un nom de paramètre invalide. De toute façon, après avoir réparé les éléments manquants, pour votre faire tout en boucle et le nom du paramètre pour obtenir quelque chose de travail - cet extrait fonctionne. –