AfxCheckMemory 

BOOL AfxCheckMemory ( );

Возвращаемое значение

Ненулевое значение, если ошибки не памяти; в противном случае 0.

Примечания

Эта функция проверяет пул свободной памяти и выводит сообщения об ошибках при необходимости. Если функция обнаруживает повреждение памяти, он ничего не печатает.

Проверяются все блоки памяти, в настоящее время размещаются в куче, включая те, которые выделены новые , а не те, выделенных прямых обращений к основной памяти allocators, такие как функции malloc или функции GlobalAlloc Windows. Если будет обнаружен какой-либо блок поврежден, сообщение печатается на вывод отладчика.

Если включить строку

# define новые DEBUG_NEW

в программный модуль то последующие вызовы AfxCheckMemory показывают имя файла и номер строки, где выделяется память.

Примечаниеnbsp;  Если ваш модуль содержит один или несколько реализаций сериализуемых классов, то вы должны поместить #define линия после последнего вызова макроса IMPLEME&NT_SERIAL.

Эта функция работает только в отладочной версии MFC.

Пример

 / / Пример для AfxCheckMemory
Кейдж * pcage = новый Кейдж (21);   / / Клетка является производным от CObject.
Возраст * страницы = new Age (22);     / / Возраст не является производным от CObject.
*(((Char*) pcage) - 1) = 99;   / / Коррумпированные предыдущих гвардии байт
*(((Char*) страница) - 1) = 99;    / / Коррумпированные предыдущих гвардии байт
AfxCheckMemory()

Результаты из программы:

ошибка памяти чек на $0067495F = $63, должно быть $FD
ПОВРЕЖДЕНИЯ: Перед блока Non-объект на $00674960
Не-объект в файл test02.cxx(48)
Non-объект, расположенный в $00674960 — 2 байта
Ошибка памяти чек на $00674905 = $63, должно быть $FD
ПОВРЕЖДЕНИЯ: До объекта блок на $00674906
Объект, в файл test02.cxx(47)
Объект, расположенный в $00674906 является длиной 6 байт

Index