PDA

Visualizza la versione completa : [C] Liberare con free solo parte della memoria allocata


Sommer
11-07-2009, 14:34
Salve a tutti,
vorrei sapere se è possibile, dopo aver allocato una quantità di memoria, deallocarne solo una parte ed utilizzare quella di fronte ad una richiesta di minore memoria, oppure se è necessario deallocarla tutta e allocare da capo quella di cui ho bisogno.
Nel caso sia possibile, come devo procedere?
Grazie

oregon
11-07-2009, 14:47
Puoi usare la funzione realloc per ridimensionare la memoria a partire da quella allocata.

Sommer
11-07-2009, 14:52
Ma con realloc potrei eventualmente passare da un'area di memoria minore a una maggiore? Perchè sapevo che la memoria allocata deve essere contigua...quindi potrebbe essere che aumentando la memoria con realloc ricevo un errore mentre non con malloc?
In questo caso è meno dispendioso provare con realloc e poi al massimo liberare quella memoria e allocare con malloc o direttamente liberare e usare malloc?

oregon
11-07-2009, 18:53
Originariamente inviato da Sommer
Ma con realloc potrei eventualmente passare da un'area di memoria minore a una maggiore?

Ovviamente sì.


Perchè sapevo che la memoria allocata deve essere contigua...quindi potrebbe essere che aumentando la memoria con realloc ricevo un errore mentre non con malloc?

Nessun problema ... prova ad usare la realloc.

Loading