Bonjour dans le cadre d'un programme je dois réaliser un tableau de pointeur vers une structure pile.
Je définis donc ma structure pile et un pointeur vers cette structure.
J'ai créé une fonction afin d'initialiser mon tableau.
Cependant à chaque fois que je lance mon programme, j'ai une erreur qui est la suivante:
J'ai souligné la ligne correspondante dans le code.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 Invalid write of size 8 ==2296== at 0x401D22: init_pile (fc.c:17) ==2296== by 0x402271: forwardChecking (fc.c:192) ==2296== by 0x4007AF: main (main.c:9) ==2296== Address 0x0 is not stack'd, malloc'd or (recently) free'd
Pourtant il me semble bien n'avoir oublié aucun malloc.
Enfin j'espère que vous pourrez m'aider.
Voici le code:
Ma structure pile :
Ma fonction d'initialisation:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 typedef struct { liste* domaines; int* instanciation; } *pile;
Appel à la fonction:
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
17
18
19
20
21
22
23
24
25
26 void init_pile(int n, pile* p, int taille) { int i,j; p= (pile*) malloc(taille*sizeof(pile)); for (i=0; i< taille; i++) { p[i] = NULL; } for(i=0; i<taille; i++) { p[i]->domaines= (liste*)malloc(n*sizeof(liste)); for (j=0; j< n; j++) { p[i]->domaines[j] = NULL; } p[i]->instanciation = (int*) malloc(n*sizeof(int)); for (j=0; j< n; j++) { p[i]->instanciation[j] = -1; } } }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 pile *p=NULL; init_pile(csp->n_variables, p, 100);
Partager