Esta pregunta me fue formulada en una entrevista.¿Qué sucede cuando intenta liberar memoria asignada por el administrador de montón, que asigna más de lo que se solicita?
Supongamos que char * p = malloc (n) asigna más que n, digamos que se asignan N bytes de memoria y free (p) se usa para liberar la memoria asignada a p.
¿Puede Heap Manager realizar dicha asignación defectuosa? ¿Qué ocurre ahora? ¿Se liberarán n bytes o se liberarán N bytes?
¿Hay algún método para encontrar cuánta memoria se libera?
EDITAR
¿hay algún método para encontrar la cantidad de memoria se libera?
mejor que nada,
mallinfo() puede arrojar algo de luz como se ha señalado por "Fred Larson"
¿Por qué crees que tal asignación es incorrecta? Independientemente de cuántos bytes "reales" 'malloc()' asignados, solo puede usar 'n' bytes, y' free() 'liberará todos los bytes asignados. La mayoría de las implementaciones 'malloc' asignan más espacio que el solicitado por razones de eficiencia. Una implementación define 'malloc' y' free', y por definición, tienen que acordar un esquema de asignación. –