gestion mémoire sur plusieurs malloc
Bonjour,
Je voudrais savoir si vous avez des methodes pour gérer les malloc et leurs tests si ils echouent.
Voici un exemple que j'ai écrit pour 3 pointeurs a allouer. Il me semble que ce code est "sur" dans le sens ou on ne peut pas perdre de mémoire, mais on voit que ca peut devenir vite lourd à gerer, surtout si on en a plus que 3, mais c'est la manière la plus simple et concise que j'ai trouvé pour l'instant :
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 27 28 29 30 31 32 33 34 35 36
|
int * a, *b;
int ** c;
a = malloc(taille);
b = malloc(taille);
c = malloc(taille2);
if(a == NULL || b == NULL || c == NULL) {
free(a);
free(b);
free(c);
return -1;
}
//je met tout à null pour pouvoir faire un free sur tous au cas ou un échoue.
for(i = 0 ; i < taille2 ; i++) {
c[i] = NULL;
}
for(i = 0 ; i < taille2 ; i++) {
c[i] = malloc(taille);
if( c[i] == NULL) {
free(a);
free(b);
for(i = 0 ; i < taille2 ; i++) {
free(c[i]);
}
free(c);
return -1;
}
}
//ouf tous les mallocs ont fonctionnés :roll:
//on peut maintenant ecrire le reste de la fonction sans oublier de faire un free pour tous les pointeurs a la fin |