_CrtIsMemoryBlock
Comprueba que un bloque de memoria especificado está en el montón local y que tiene un identificador válido de tipo de bloque del montón de depuración (solo versión de depuración).
Sintaxis
int _CrtIsMemoryBlock(
const void *userData,
unsigned int size,
long *requestNumber,
char **filename,
int *lineNumber
);
Parámetros
userData
Puntero al principio del bloque de memoria que se va a comprobar.
size
Tamaño del bloque especificado, en bytes.
requestNumber
Puntero al número de asignación del bloque o NULL
.
filename
Puntero al nombre del archivo de código fuente que solicitó el bloque o NULL
.
lineNumber
Puntero al número de línea del archivo de código fuente o NULL
.
Valor devuelto
_CrtIsMemoryBlock
devuelve TRUE
si el bloque de memoria especificado está en el montón local y tiene un identificador válido de tipo de bloque del montón de depuración; de lo contrario, la función devuelve FALSE
.
Comentarios
La función _CrtIsMemoryBlock
comprueba que un bloque de memoria especificado está en el montón local de la aplicación y que tiene un identificador de tipo de bloque válido. Esta función también se puede usar para obtener el número de orden de la asignación de objetos, y el nombre y el número de línea del archivo de código fuente en el que se solicitó la asignación del bloque de memoria originalmente. Un valor que noNULL
se pasa en un requestNumber
parámetro , filename
o lineNumber
hace _CrtIsMemoryBlock
que el parámetro se establezca en el valor del encabezado de depuración del bloque de memoria, si encuentra el bloque en el montón local. Cuando _DEBUG
no se define, las llamadas a _CrtIsMemoryBlock
se quitan durante el preprocesamiento.
Si _CrtIsMemoryBlock
se produce un error, devuelve FALSE
y los parámetros de salida se inicializan en valores predeterminados: requestNumber
y lineNumber
se establecen en 0 y filename
se establecen en NULL
.
Dado que esta función devuelve TRUE
o FALSE
, se puede pasar a una de las _ASSERT
macros para crear un mecanismo básico de control de errores de depuración. En el ejemplo siguiente se genera un error de aserción si la dirección especificada no se está en el montón local:
_ASSERTE( _CrtIsMemoryBlock( userData, size, &requestNumber,
&filename, &linenumber ) );
Para obtener más información sobre cómo _CrtIsMemoryBlock
se puede usar con otras funciones y macros de depuración, vea Macros para informes. 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 |
---|---|
_CrtIsMemoryBlock |
<crtdbg.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.
Ejemplo
Consulte el ejemplo del _CrtIsValidHeapPointer
artículo.