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?