AfxCheckMemory 

BOOL AfxCheckMemory ( );

Значення, яке повертається

Ненульовий, якщо жодних помилок пам'яті; в іншому випадку 0.

Зауваження

Ця функція перевіряє вільної пам'яті басейн і виводить повідомлення про помилку, як це потрібно. Якщо функція виявляє пам'яті корупції, він нічого не друкує.

Перевіряються всі блоки пам'яті, в даний час розміщені на купу, у тому числі тих, що виділені на новий , але не ті, що виділені на прямі заклики до базових allocators пам'яті, таких як malloc функції або функції Windows GlobalAlloc . У разі будь-який блок пошкоджено, повідомлення буде надруковано до налагоджувача виводу.

Якщо ви включите лінії

# визначити новий DEBUG_NEW

програма модуля потім наступні дзвінки на AfxCheckMemory Показати номер рядка та ім'я файлу де була виділена в пам'яті.

Приміткаnbsp;  Якщо ваш модуль містить один або декілька реалізацій серіалізованим класів, то ви повинні покласти на #define лінії після останнього виклику IMPLEME&NT_SERIAL макросів.

Ця функція працює тільки в налагоджування версії MFC.

Приклад

 / / приклад для AfxCheckMemory
Клітці * pcage = нові клітини (21);   / / Клітці походить від CObject.
Вік * сторінка = новий вік (22);     / / Вік не походить від CObject.
*(((char*) pcage) - 1) = 99;   / / Корумпованих попереднього гвардії байт
*(((char*) сторінок) - 1) = 99;    / / Корумпованих попереднього гвардії байт
AfxCheckMemory()

Результат від програми:

помилка перевірки пам'яті в $0067495F = $63, повинна бути $FD
ПОШКОДЖЕННЯ: Перед Non-об'єкт блоку в $00674960
Non-об'єкт виділяється в файлі test02.cxx(48)
Non-об'єкт-одна з місцевих громад, що розташована в $00674960 є 2 байт
Помилка перевірки пам'яті в $00674905 = $63, повинна бути $FD
ПОШКОДЖЕННЯ: До об'єкта блоку в $00674906
Об'єкт виділяється в файлі test02.cxx(47)
Об'єкт-одна з місцевих громад, що розташована в $00674906 є 6 байт

Index