In
https://en.wikibooks.org/wiki/Algorithm_Implementation/Mathematics/Extended_Euclidean_algorithm
the C implementation calls malloc inside the recursive function. Isn't that a memory leak?
#include <stdio.h>
#include <stdlib.h>
int mod (int a, int b){
    return a %b; 
}   
int *extendedEuclid (int a, int b){
   int *dxy = (int *)malloc(sizeof(int) *3);
   if (b ==0){
      dxy[0] =a; dxy[1] =1; dxy[2] =0;
       return dxy;
   }
   else{
       int t, t2;
       dxy = extendedEuclid(b, mod(a, b));
       t =dxy[1];
       t2 =dxy[2];
       dxy[1] =dxy[2];
       dxy[2] = t - a/b *t2;
       return dxy;
    }
}
int main(void)
{
   int a =99, b =78;
   int *ptr;
   ptr =extendedEuclid (a, b);
   printf("%d = %d * %d + %d * %d \n",ptr[0], a, ptr[1], b, ptr[2] );
   return 0;        
}
How do you free memory allocated in recursive functions?
 
     
     
    