Compartir a través de


_CrtMemDifference

Compara dos estados de memoria y devuelve sus diferencias (solo versión de depuración).

Sintaxis

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

Parámetros

stateDiff
Puntero a una estructura de _CrtMemState que se usa para almacenar las diferencias entre los dos estados de memoria (devueltas).

oldState
Puntero a un estado de memoria anterior (estructura de_CrtMemState ).

newState
Puntero a un estado de memoria posterior (estructura de_CrtMemState ).

Valor devuelto

Si la diferencia en los estados de memoria es significativa, _CrtMemDifference devuelve TRUE. De lo contrario, la función devuelve FALSE.

Comentarios

La función _CrtMemDifference compara oldState y newState y almacena sus diferencias en stateDiff, que la aplicación puede usar para detectar fugas y otros problemas de memoria. Cuando _DEBUG no se define, las llamadas a _CrtMemDifference se quitan durante el preprocesamiento.

newState y oldState deben ser un puntero válido a una _CrtMemState estructura, definida en crtdbg.h, que _CrtMemCheckpoint se ha rellenado antes de la llamada a _CrtMemDifference. stateDiff debe ser un puntero a una instancia asignada previamente de la estructura de _CrtMemState . Si stateDiff, newStateo oldState es NULL, se invoca el controlador de parámetros no válidos, como se describe en Validación de parámetros. Si la ejecución puede continuar, errno, _doserrno, _sys_errlisty _sys_nerr se establece EINVAL en y la función devuelve FALSE.

_CrtMemDifference compara los _CrtMemState valores de campo de los bloques de oldState con los newState de y almacena el resultado en stateDiff. Cuando el número de tipos de bloques asignados o el número total de bloques asignados para cada tipo difiere entre los dos estados de memoria, la diferencia en los estados se considera significativa. La diferencia entre la mayor cantidad que se haya asignado en algún momento simultáneamente a los dos estados y la diferencia entre las asignaciones totales a los dos estados también se almacenan en stateDiff.

De forma predeterminada, los bloques internos en tiempo de ejecución de C (_CRT_BLOCK) no se incluyen en las operaciones de estado de la memoria. La _CrtSetDbgFlag función se puede usar para activar el _CRTDBG_CHECK_CRT_DF bit de para incluir estos bloques en la detección de _crtDbgFlag fugas y otras operaciones de estado de memoria. Los bloques de memoria liberados (_FREE_BLOCK) no hacen que _CrtMemDifference devuelva TRUE.

Para obtener más información sobre las funciones de estado del montón y la _CrtMemState estructura, consulte Funciones de informes de estado del montón. Para obtener información sobre cómo se asignan, inicializan y administran los bloques de memoria en la versión de depuración del montón base, consulte Detalles del montón de depuración de CRT.

Requisitos

Routine Encabezado necesario Encabezado opcional
_CrtMemDifference <crtdbg.h> <errno.h>

Para obtener más información sobre compatibilidad, consulte Compatibilidad.

Bibliotecas: solo versiones de depuración de las bibliotecas en tiempo de ejecución de C.

Consulte también

Rutinas de depuración
_crtDbgFlag