_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
_doserrno
errno
_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.