_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
, newState
o 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_errlist
y _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 estructura _CrtMemState
, consulte Funciones que indican el 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.