Pb avec des fonctions pour libérer la mémoire
Bonjour tout le monde voici mon problème:
J'utilise pas mal d'allocations et réallocations mémoire dans mon code car je dois construire des tableaux 1D et 2D dont je ne connais pas à l'avance la taille. Et donc j'utilise aussi beaucoup de désallocations . pour éviter d'avoir à écrire à chaque fois :
Code:
1 2 3 4 5
|
int *p;
...
free(p);
p = NULL; |
ou
Code:
1 2 3 4 5 6 7 8 9 10 11
|
int i;
int** p;
...
for(i = 0; i < nblignes; i++)
{
free(p[i]);
p[i] = NULL;
}
free(p);
p = NULL; |
j'utilise à la place deux fonctions qui vont me faire cette libération. voici ces deux fonctions :
Code:
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 destroy1(int* p)
{
if (p != NULL)
{
free(p);
p = NULL;
}
}
void destroy2(int** pp, int nbp)
{
int i;
if(pp != NULL)
{
for(i = 0; i < nbp; i++)
{
if(pp[i] != NULL){
free(pp[i]);
pp[i] = NULL;
}
}
free(pp);
pp = NULL;
}
} |
le problème c'est que ça n'a pas l'air de marcher ...
quand je détruit un pointeur et que je teste s'il est égal à NULL, cela me renvoie 0.
Peut être avez vous une idée sur ce problème.
Merci d'avance