¿Qué es toda esta memoria reservada y no comprometida en mi proceso?

Estoy usando VMMap de SysInternals para ver la memoria asignada por mi proceso Win32 C ++ en WinXP, y veo un montón de asignaciones donde partes de la memoria asignada están reservadas pero no comprometidas. Hasta donde puedo ver, a partir de mis lecturas y pruebas, todos los asignadores de memoria comunes (por ejemplo, malloc, new, LocalAlloc, GlobalAlloc) utilizados en un programa C ++ siempre asignan bloques de memoria totalmente comprometidos. Los montones son un ejemplo común de código que reserva memoria pero no lo compromete hasta que sea necesario. Sospecho que algunos de estos bloques son montones de Windows / CRT, pero parece haber más de estos tipos de bloques de lo que esperaría para montones. Veo el orden de 30 de estos bloques en mi proceso, entre 64k y 8MB de tamaño, y sé que mi código nunca llama intencionalmente a VirtualAlloc para asignar memoria reservada y no comprometida.

Aquí hay un par de ejemplos de VMMap:http://www.flickr.com/photos/95123032@N00/5280550393/

¿Qué más asignaría tales bloques de memoria, donde gran parte está reservada pero no comprometida? ¿Tendría sentido que mi proceso tenga 30 montones? Gracias.

Respuestas a la pregunta(3)

Su respuesta a la pregunta