Bonjour, j'aimerais savoir si mon code suivant engendre une fuite de mémoire. Par exemple, je fais la fonction suivante :

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
 
int * ma_fun(int i1,int i2)
{
int * tab=malloc(2*sizeof(*tab));
tab[0]=i1;
tab[1]=i2;
 
return tab;
}
 
int main()
{
int * toto=ma_fun(3,5);
printf("%d\t%d\n",toto[0],toto[1]);
 
free(toto);
return 0;
}
Alors je pense qu'il doit y avoir une fuite de mémoire car ma fonction ma_fun renvoie (si j'ai bien compris) une copie de l'adresse de tab. Ce qui fait qu'il y a deux pointeurs : tab et toto. Pourtant, je n'ai qu'un seul malloc et un seul free.

Est-ce que je me trompe ?

Merci.