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