Поделиться через


_CrtMemDifference

Сравнивает два состояния памяти и возвращает их различия (только отладочная версия).

Синтаксис

int _CrtMemDifference(
   _CrtMemState *stateDiff,
   const _CrtMemState *oldState,
   const _CrtMemState *newState
);

Параметры

stateDiff
Указатель на структуру _CrtMemState , которая используется для хранения различий между двумя (возвращенными) состояниями памяти.

oldState
Указатель на более раннее состояние памяти (структура_CrtMemState ).

newState
Указатель на более позднее состояние памяти (структура_CrtMemState ).

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

Если разница в состояниях памяти имеет значительное значение, _CrtMemDifference возвращается TRUE. В противном случае функция возвращает значение FALSE.

Замечания

Функция _CrtMemDifference сравнивает oldState и newState сохраняет их различия в stateDiffтом, что затем может использоваться приложением для обнаружения утечек памяти и других проблем с памятью. Если _DEBUG это не определено, вызовы _CrtMemDifference удаляются во время предварительной обработки.

newState и oldState каждый из них должен быть допустимым указателем на _CrtMemState структуру, определенную в crtdbg.h, которая _CrtMemCheckpoint заполняется перед вызовом _CrtMemDifference. ЗначениеstateDiff должно быть указателем на ранее выделенный экземпляр структуры _CrtMemState . newStateЕсли stateDiff, или oldState естьNULL, вызывается недопустимый обработчик параметров, как описано в разделе "Проверка параметров". Если выполнение разрешено продолжать, , , и задано значение EINVAL и _sys_nerrфункция возвращаетсяFALSE. _sys_errlist_doserrnoerrno

_CrtMemDifference сравнивает _CrtMemState значения полей блоков в oldState них newState и сохраняет результат stateDiff. Если количество выделенных типов блоков или общее количество выделенных блоков для каждого типа отличается между двумя состояниями памяти, разница в состояниях считается значительной. Также в stateDiffсохраняются разница между максимальными объемами, выделенными когда-либо за раз для двух состояний, и разница между общим числом выделенных блоков для двух состояний.

По умолчанию внутренние блоки времени выполнения C (_CRT_BLOCK) не включаются в операции состояния памяти. Функцию _CrtSetDbgFlag можно использовать для включения _CRTDBG_CHECK_CRT_DF этих блоков в обнаружение утечки _crtDbgFlag и других операций состояния памяти. Освобожденные блоки памяти (_FREE_BLOCK) не вызывают _CrtMemDifference возврата TRUE.

Дополнительные сведения о функциях состояния кучи и _CrtMemState структуре см. в разделе "Отчеты о состоянии кучи". Сведения о выделении, инициализации и управлении блоками памяти в отладочной версии базовой кучи см. в сведениях об отладочной куче CRT.

Требования

Маршрут Обязательный заголовок Необязательный заголовок
_CrtMemDifference <crtdbg.h> <errno.h>

Дополнительные сведения о совместимости см. в разделе Совместимость.

Библиотеки: отладка версий только библиотек среды выполнения C.

См. также

Отладка подпрограмм
_crtDbgFlag