Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Сравнивает два состояния памяти и возвращает их различия (только отладочная версия).
Синтаксис
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.