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 байт