ho necessità di avere un vettore che contenga caratteri. pero siccome la quantità di caratteri è varibiale e puo oltrepassare quella del vettore ho necessità di usare l'allocazione dinamica, tramite la funzione realloc (anche forzato dal prof in questa scelta).

è corretta una cosa del genere?

int dim_iniziale,allocati,blocco,usati;

dim_iniziale=50; // dim iniziale della stringa
allocati=dim_iniziale; // mem allocata all'inizio
usati=0; // caratteri usati
blocco=50; // blocchi di memoria

char *array;
array= (char *)malloc(sizeof(char) * dim_iniziale);


poi andando a incrementare la variabile usati a ogni carattere aggiunto, quando usati supera allocati faccio:

if (usati > allocati) {
allocati = allocati + blocco;
array = (char *)realloc(array,allocati);
}
if (usati > allocati) {
allocati = allocati + blocco;
array = (char *)realloc(array,allocati);
}


e quando ho finito

free(array);

secondo voi è corretto?

i miei dubbi sono sopratutto sulla malloc iniziale...come fareste voi?