1) la funzione dovresti chiamarla allocazione non allocamento ...
2) il puntatore passato deve essere inizializzato a NULL altrimenti la realloc ha problemi
3) il puntatore ottenuto dalla realloc deve essere restituito e utilizzato nel main
In pratica le modifiche al codice saranno ...
Nella funzione
struct prova *allocazione(struct prova * ptr)
{
...
return ptr;
}
e nel main
struct prova *ptr = NULL;
ptr=allocazione(ptr);