Bonjour
je suis desole de faire un enieme post sur un probleme d'allocation memoire mais la j'avoue que je seche et toute aide sera la biienvenue.

Voila:
j'ai un programme possédant une fonction qui appelle une autre fonction et ceci au sein d'une boucle de traitement:

code de la fonction appelante:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
int ** induct_graphs;
for (...maboucle)
{
induct_graphs = heuristic(k, temp, decomp, decomp);
result = test(induct_graphs);
if (result == 0)
   return 0;
}
De façon résumé la fonction heuristic est la suivante:
code de la fonction appelé
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
int ** heuristic(...)
{
int ** graphs;
************************************
graphs = calloc(1, sizeof(int*));
alloc_test_2d_table(graphs); //test si le calloc de la matrice s'est bien déroulé
graphs[0] = calloc(2, sizeof(int));
 
... traitement sur graphs ....
 
return graphs;
}
Tout se passe bien pour un grand nombre de tour de boucle mais au bout d'un moment j'obtiens une erreur "memory corruption" (pas d'erreur ou de warning a la compil) ... au niveau des ************************************. c'est a dire que le calloc m'indique une erreur de corruption mémoire.
Je ne comprends pas trop car il me semblait que la variable grph de ma fonction heuristic était libéré à la sortie de la fonction...

Je ne vois pas ... si vous avez une idée je vous en remercie!!