PDA

Visualizza la versione completa : [c] utilizzo della rialloc


nik600
28-01-2005, 10:31
ciao

voi sapreste spiegarmi l'utilizzo della rialloc in c?

oppure qualche link?

thnks nik

kentaromiura
28-01-2005, 10:42
void *realloc(void *block, size_t size);
rialloca memoria gia' allocata ritornando l'indirizzo della
nuova memoria allocata

dove *block e' un puntatore tornato da malloc:
void *malloc(size_t size);
malloc alloca size bytes dinamicamente tornando un puntatore all' area
allocata
e size e' la nuova dimensione che vuoi allocare
ti ritorna l'indirizzo di memoria della nuova area allocata.

nik600
28-01-2005, 10:48
ti ringrazio, quindi supponiamo una cosa di questo tipo:



int *prova=(int) malloc(sizeof int*20);

/*
faccio un po di operazioni su *prova, mi accorgo che non mi basta
*/

prova = (int)realloc(prova,sizeof(int)*30);


/*
faccio altre operazioni su *prova, ora troppo grande
*/

prova = (int)realloc(prova,sizeof(int)*15);


tutto questo corretto?

e i dati presenti nel vettore prova vengono mantenuti?

quando rialloco la memoria precedente viene resa disponibile?

grazie nik

kentaromiura
28-01-2005, 11:06
dal K&R:
realloc changes the size of the object pointed to by
p to size. The contents will be unchanged up to the
minimum of the old and new values. If the new size is
larger, the new space is uninitialised. realloc returns
a pointer to the new space, or NULL if the request cannot
be satisfied, in which case p is unchanged.
---
realloc cambia la dimensione della memoria puntata da p alla dimensione specificata.
il contenuto restera' intonso fino al piu' basso tra i due valori(precedente e successivo).
se la nuova dimensione e'maggiore lo spazio aggiunto non sara' inizializzato(contiene spazzatura),ritoena un puntatore al nuovo spazio o NULL in caso di fallimento

Loading