Интерпретация типов блоков памяти
Этот раздел применим к следующим выпускам:
Выпуск |
Visual Basic |
C# |
F# |
C++ |
Web Developer |
---|---|---|---|---|---|
Express |
![]() |
![]() |
![]() |
Только машинные коды |
![]() |
Pro, Premium и Ultimate |
![]() |
![]() |
![]() |
Только машинные коды |
![]() |
Как видно из раздела Включение отображения утечек памяти, в сведениях об утечке каждый блок потерянной памяти определяется как обычный, клиентский или CRT-блок.На практике обычные и клиентские блоки — те типы, которые скорее всего можно увидеть.
Обычный блок — это обыкновенная память, выделенная программой.
Клиентский блок — особый тип блока памяти, используемой программами MFC для объектов, для которых деструктор обязателен.Операция new в MFC создает либо обычный, либо клиентский блок, в соответствии с создаваемым объектом.
Блок CRT — это блок памяти, выделенной библиотекой CRT для внутреннего использования.Библиотека CRT обрабатывает освобождение этих блоков, поэтому маловероятно увидеть их в отчете об утечке памяти — разумеется, если не возникнет серьезный сбой (например, повреждение самой библиотеки CRT).
Существуют два типа блоков, которые невозможно увидеть в отчетах об утечках памяти:
Свободный блок — блок памяти, которая была освобождена.
Пропускаемый блок — блок, специально помеченный, чтобы он не появлялся в отчете об утечке памяти.