Questa domanda mi è stata posta in un'intervista.cosa succede quando proviamo a liberare memoria allocata dal gestore di heap, che assegna più di quanto richiesto?
Supponiamo che char * p = malloc (n) assegni più di n, diciamo che N byte di memoria sono allocati e liberi (p) è usato per liberare la memoria allocata a p.
il gestore di heap può eseguire tale allocazione errata? cosa succede ora, n byte saranno liberati o N byte liberati?
esiste un metodo per trovare la quantità di memoria libera?
EDIT
c'è qualche metodo per trovare la quantità di memoria liberata?
meglio di niente,
mallinfo() può fare luce come rilevato da "Fred Larson"
Perché pensi che una simile allocazione sia difettosa? Indipendentemente dal numero di "effettivi" byte 'malloc()' allocati, è possibile utilizzare solo 'n' byte e' free() 'libererà tutti i byte allocati. La maggior parte delle implementazioni di 'malloc' allocano più spazio quindi richiesto per motivi di efficienza. Un'implementazione definisce 'malloc' e' free' e, per definizione, devono concordare uno schema di allocazione. –