Что это за незафиксированная, зарезервированная память в моем процессе?

Я ' m с помощью VMMap из SysInternals для просмотра памяти, выделенной моим процессом Win32 C ++ в WinXP, и я вижу кучу выделений, в которых части выделенной памяти зарезервированы, но не зафиксированы. Насколько я могу судить по результатам чтения и тестирования, все общие распределители памяти (например, malloc, new, LocalAlloc, GlobalAlloc), используемые в программе на C ++, всегда выделяют полностью зафиксированные блоки памяти. Кучи - распространенный пример кода, который резервирует память, но не фиксирует ее до тех пор, пока она не понадобится. Я подозреваю, что некоторые из этих блоков представляют собой кучи Windows / CRT, но, похоже, таких блоков больше, чем я ожидал бы для куч. Я вижу в своем процессе порядка 30 таких блоков размером от 64 КБ до 8 МБ, и я знаю, что мой код никогда намеренно не вызывает VirtualAlloc для выделения зарезервированной незафиксированной памяти.

Вот несколько примеров из VMMap: http://www.flickr.com/photos/ 95123032 @ N00/5280550393/

What else would allocate such blocks of memory, where much of it is reserved but not committed? Would it make sense that my process has 30 heaps? Thanks.

6
задан Art 21 December 2010 в 19:47
поделиться