_CrtMemDifference

 

Publicado: octubre de 2016

Para obtener la documentación más reciente de Visual Studio 2017 RC, consulte Documentación de Visual Studio 2017 RC.

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

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 ).

Si los estados de memoria son significativamente distintos, _CrtMemDifference devuelve TRUE. De lo contrario, la función devuelve el FALSE.

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

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

_CrtMemDifference compara los valores de campo de _CrtMemState de los bloques de oldState con los de newState, y almacena el resultado en stateDiff. Cuando el número de tipos de bloque asignados o el número total de bloques asignados para cada tipo no es igual en los dos estados de memoria, los estados se consideran significativamente diferentes. 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 función _CrtSetDbgFlag se puede usar para activar el bit _CRTDBG_CHECK_CRT_DF de _crtDbgFlag y así incluir estos bloques en la detección de pérdidas y otras operaciones de estado de la memoria. Los bloques de memoria liberados (_FREE_BLOCK) no hacen que _CrtMemDifference devuelva TRUE.

Para más información sobre las funciones de estado del montón y la estructura _CrtMemState , vea Heap State Reporting Functions. 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, vea CRT Debug Heap Details.

RutinaEncabezado necesarioEncabezado opcional
_CrtMemDifference<crtdbg.h><errno.h>

Para obtener más información sobre compatibilidad, vea Compatibility en la introducción.

Bibliotecas: versiones de depuración de características de la biblioteca CRT solo.

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

Rutinas de depuración
_crtDbgFlag

Mostrar: