PDA

View Full Version : [C] Realloc array di puntatori


Qwertid
14-12-2006, 22:47
Ciao a tutti!
Volevo chiedervi una cosa sulla funzione realloc: se io dovessi riallocare la memoria destinata ad un array di puntatori, ma al contario, ovvero togliendo delle posizioni all'array piuttosto che aggiungendole, con che criterio agisce la realloc? Grazie :)

andbin
14-12-2006, 22:56
Ciao a tutti!
Volevo chiedervi una cosa sulla funzione realloc: se io dovessi riallocare la memoria destinata ad un array di puntatori, ma al contario, ovvero togliendo delle posizioni all'array piuttosto che aggiungendole, con che criterio agisce la realloc? Grazie :)La realloc() non sa assolutamente nulla riguardo cosa contiene il blocco di memoria da (ri)allocare. Quello che è sicuro è questo:
- la dimensione specificata nel secondo parametro può essere inferiore o superiore alla dimensione correntemente allocata.
- Il contenuto viene lasciato intatto per il minimo della dimensione vecchia e nuova.
- La memoria allocata eventualmente in più non è inizializzata.

Per il resto sei tu che devi gestire il contenuto del blocco di memoria in base alle tue necessità.

Qwertid
14-12-2006, 23:38
Il mio è un caso del tipo: array da 10 elementi. Realloc per fare un array da 9 elementi.. Quale sarà la locazione che verrà eliminata? L'ultima? Grazie della risposta! :)

wingman87
15-12-2006, 00:06

andbin
15-12-2006, 09:40
Il mio è un caso del tipo: array da 10 elementi. Realloc per fare un array da 9 elementi.. Quale sarà la locazione che verrà eliminata? L'ultima? Grazie della risposta! :)Ma ... l'ho anche spiegato ... :rolleyes:
La realloc non sa cosa c'è nell'area di memoria, se ci sono dentro dei caratteri, puntatori, o quant'altro. Puoi chiedere alla realloc di allocare meno bytes o più bytes. Ovviamente se allochi meno bytes, un pezzo della parte finale del blocco se ne va via. ;)