how can i fix the problem of killed in my function ?
#include <stdio.h> #include <stdlib.h> typedef struct zdd { int n,x,y; char a; }zdd; typedef int bool ; #define True 1 #define False 0 /** Implémentation **\: PILE DES ENTIERS**/ //typedef char Typeelem_Pi ; typedef zdd Typeelem_Pi ; typedef struct Maillon_Pi * Pointeur_Pi ; //typedef Pointeur_Pi Typepile_Pi ; struct Maillon_Pi { Typeelem_Pi Val ; Pointeur_Pi Suiv ; } ; void Creerpile_Pi( Pointeur_Pi *P ) // pile vide { *P = NULL ; } // *P représentera le sommet de la pile bool Pilevide_Pi ( Pointeur_Pi P ) { return (P == NULL ); } void Empiler_Pi ( Pointeur_Pi *P, Typeelem_Pi Val ) { Pointeur_Pi Q; Q = (struct Maillon_Pi *) malloc( sizeof( struct Maillon_Pi)) ; Q->Val = Val ; Q->Suiv = *P; // placer le maillon Q en sommet de pile *P = Q; // désigner le nouveau sommet *P } void Depiler_Pi ( Pointeur_Pi *P, Typeelem_Pi *Val ) { Pointeur_Pi Sauv; if (! Pilevide_Pi (*P) ) { *Val = (*P)->Val ; Sauv = *P; // garder le sommet *P = (*P)->Suiv; // changer le sommet vers le suivant Sauv->Suiv=NULL; // détacher l'ancien sommet free(Sauv); } else printf ("Pile vide \n"); } //****end of abstract machines int fibo(int b) { Pointeur_Pi p; int fib=0; zdd a; char l; Creerpile_Pi(&p); z: if (b<=1) fib=1; else { Empiler_Pi(&p,a); a.n=b-1; a.a='p'; goto z; p: a.x=fib; Empiler_Pi(&p,a); a.n=b-2; a.a='h'; goto z; h: a.y=fib; fib=a.x+a.y; } l=a.a; Depiler_Pi(&p,&a); if(l=='z') goto z; if(l=='p') goto p; if(l=='h') goto h; return fib; } int main() { printf("%d\n",fibo(5)); return 0; } this is my code , and i really dont understand what is wrong! depiler<===>push / empiler<====> pop