Compartir a través de


_CrtMemDifference

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

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 anterior de memoria (estructura de**_CrtMemState** ).

  • newState
    Puntero a un estado posterior de memoria (estructura de**_CrtMemState** ).

Valor devuelto

Si los estados de memoria son significativamente diferentes, _CrtMemDifference devuelve TRUE.si no, la función devuelve FALSE.

Comentarios

La función de _CrtMemDifference compara oldState y newState y almacena sus diferencias en stateDiff, que se pueden utilizar en la aplicación para detectar pérdidas de memoria y otros problemas de memoria.Cuando _DEBUG no está definido, las llamadas a _CrtMemDifference se quitan durante el preprocesamiento.

newState y oldState deben cada ser un puntero válido a una estructura de _CrtMemState , definido en Crtdbg.h, que se ha completado por _CrtMemCheckpoint antes de llamar a _CrtMemDifference.stateDiff debe ser un puntero a una instancia previamente asignada de la estructura de _CrtMemState .Si stateDiff, newState, o oldState es NULL, se invoca el controlador no válido de parámetro, tal y como se describe en Validación de parámetros.Si la ejecución puede continuar, errno, _doserrno, _sys_errlist, y _sys_nerr se establece en EINVAL y la función devuelve FALSE.

_CrtMemDifference compara los valores de campo de _CrtMemState de los bloques de oldState a los de newState y almacena el resultado en stateDiff.Cuando el número de tipos asignados de bloque o el número total de bloques asignados para cada tipo diferencia entre los dos estados de memoria, los estados se significativamente diferentes.La diferencia entre la cantidad mayor asignado nunca inmediatamente para los dos estados y la diferencia entre las asignaciones totales para 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 operaciones del estado de la memoria.La función de _CrtSetDbgFlag se puede utilizar para girar el bit de _CRTDBG_CHECK_CRT_DF de _crtDbgFlag para incluir estos bloques en la detección de pérdidas y otras operaciones del estado de la memoria.Los bloques de memoria liberada (_FREE_BLOCK) no _CrtMemDifference para devolver TRUE.

Para obtener más información sobre las funciones de estado de la pila y la estructura de _CrtMemState , vea Funciones que indican el estado del montón.Para obtener información sobre cómo los bloques de memoria se asignan, inicialice, y se administran en la versión de depuración del montón base, vea La administración de memoria y el montón de depuración.

Requisitos

rutina

Encabezado necesario

encabezado opcional

_CrtMemDifference

<crtdbg.h>

<errno.h>

Para obtener más información de compatibilidad, vea Compatibilidad en la Introducción.

bibliotecas: Versiones de depuración de Características de la biblioteca CRT únicamente.

Ejemplo

Vea crt_dbg1.

Equivalente en .NET Framework

No es aplicable Para llamar a la función estándar de C, utilice PInvoke. Para obtener más información, vea Ejemplos de invocación de plataforma.

Vea también

Referencia

Rutinas de depuración

_crtDbgFlag