Además de la inspección externa, puede también instrumento de su implementación de malloc para que pueda inspeccionar esas estadísticas. jemalloc
y tcmalloc
son implementaciones que, además de tener un mejor rendimiento para el código multiproceso que las implementaciones de libc típicas, agregan algunas funciones de utilidad de ese tipo.
Para profundizar, debe aprender un poco más cómo funciona la asignación de montón. En última instancia, el sistema operativo es el que asigna memoria a los procesos a medida que lo piden, sin embargo, las solicitudes al sistema operativo (llamadas de sistema) son más lentas que las llamadas regulares, por lo que una implementación de malloc
solicitará grandes segmentos al sistema operativo (bloques de 4KB u 8KB). son comunes) y los subdivide para que los sirva a sus llamadores.
Debe identificar si le interesa la memoria total consumida por el proceso (que incluye el código en sí), la memoria solicitada desde el sistema operativo dentro de una llamada de procedimiento en particular, la memoria actualmente en uso por malloc
implementación (que agrega su propia sobrecarga de contabilidad, por pequeña que sea) o la memoria que solicitó.
Además, la fragmentación puede ser un problema para los dos últimos, y puede difuminar las diferencias entre realmente utilizado y asignado.
new y malloc no utilizan la misma región ... – UmNyobe
@UmNyobe: Eso es extraño, ya que usualmente 'new' llama a' :: operator new() ', que a su vez se implementa normalmente a través de' malloc() ' ... –
http://stackoverflow.com/questions/1350819/c-free-store-vs-heap – UmNyobe