Intanto: è corretto come ho fatto?

Poi:
codice:
void   v_ins   (vec * v, void* e)
{
 v->ptr[0] = e;
}
in questa funzione passo l'inidirizzo di e (che nei parametri formali è void, ma in quelli attuali è un tipo strutturato chiamato clause).
L'assegnamento che faccio è corretto??

Non devo allocare memoria per ptr[0]?