Nel metodo pop prova a sostituire

value = (int *) p->vet[p->sp--];

con

*value = (int *) p->vet[p->sp--];

Se funziona, ti spiego il perche'.