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 : 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
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
Partager