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