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:
De façon résumé la fonction heuristic est la suivante:
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; }
code de la fonction appelé
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.
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; }
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!!
Partager