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