ciao
voi sapreste spiegarmi l'utilizzo della rialloc in c?
oppure qualche link?
thnks nik
ciao
voi sapreste spiegarmi l'utilizzo della rialloc in c?
oppure qualche link?
thnks nik
"durante i primi 5 miuti di pioggia nel bosco c'è ancora asciutto, poi quando smetterà di piovere nel bosco cadranno gocce per 5 minuti.....la natura ha un'ottima memoria..."
http://www.kumbe.it
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.
ti ringrazio, quindi supponiamo una cosa di questo tipo:
tutto questo è corretto?codice: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);
e i dati presenti nel vettore prova vengono mantenuti?
quando rialloco la memoria precedente viene resa disponibile?
grazie nik
"durante i primi 5 miuti di pioggia nel bosco c'è ancora asciutto, poi quando smetterà di piovere nel bosco cadranno gocce per 5 minuti.....la natura ha un'ottima memoria..."
http://www.kumbe.it
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