gslを使った一般の確率分布に従う離散分布の発生

GSLを使った一般の確率分布に離散分布の乱数発生(一般離散分布)。

これで片付けないとメモリーがいっぱいになる
 void gsl_ran_discrete_free (gsl_ran_discrete_t * t);

 #include<stdio.h>
 #include<gsl/gsl_rng.h>
 #include<gsl/gsl_randist.h>
 int main(void){

         double p[3];
         int i;
         const gsl_rng_type *T;
         gsl_rng *r;

         //gsl_rng_setup();
         T=gsl_rng_default;
         r=gsl_rng_alloc(T);
         //gsl_rng_set(r,time(NULL));
         gsl_rng_set(r,1);

         p[0]=0.1;
         p[1]=0.3;
         p[2]=0.6;
         gsl_ran_discrete_t* t= gsl_ran_discrete_preproc (3,p);

         for(i=0;i<=10000;i++){
                 printf("%d\n",gsl_ran_discrete(r,t));
         }

    void gsl_ran_discrete_free (gsl_ran_discrete_t * t);
}

http://www.cbrc.jp/~tominaga/translations/gsl/gsl-1.8/gsl18j.pdf