Compartir a través de


_CrtIsMemoryBlock

Comprueba que un bloque de memoria especificado está en el montón local y que tiene un identificador en bloques de la pila completa de depuración (versión de depuración solo).

int _CrtIsMemoryBlock( 
   const void *userData,
   unsigned int size,
   long *requestNumber,
   char **filename,
   int *linenumber 
);

Parámetros

  • [in] userData
    Puntero al principio del bloque de memoria que se va a comprobar.

  • [in] size
    Tamaño del bloque especificado (en bytes).

  • [out] requestNumber
    Puntero al número de asignación de bloque o de NULL.

  • [out] filename
    Puntero al nombre del archivo de código fuente que solicitó el bloque o NULL.

  • [out] linenumber
    Puntero al número de línea en el archivo de código fuente o NULL.

Valor devuelto

_CrtIsMemoryBlock devuelve TRUEsi el bloque de memoria especificado se encuentra dentro del montón local y tiene un identificador en bloques de pila válida de depuración; si no, la función devuelve FALSE.

Comentarios

La función de _CrtIsMemoryBlock comprueba que un bloque de memoria especificado se encuentra dentro del montón local de la aplicación y que tiene un identificador en bloques válido.Esta función se puede utilizar para obtener el número de orden de la asignación de objetos y el nombre del archivo y el número de línea donde la asignación del bloque de memoria se solicitó originalmente.Pasando los valores no NULL para requestNumber, filename, o las causas _CrtIsMemoryBlock de los parámetros de linenumber de establecer estos parámetros a los valores del encabezado de depuración del bloque de memoria, si encuentra el bloque en el montón local.Cuando _DEBUG no está definido, las llamadas a _CrtIsMemoryBlock se quitan durante el preprocesamiento.

Si se produce _CrtIsMemoryBlock , devuelve FALSE y parámetros de salida se inicializan con los valores predeterminados: requestNumber y lineNumber se establecen en 0 y filename se establece en NULL.

Dado que esta función devuelve TRUE o FALSE, puede pasar a una de las macros de _ASSERT para crear un mecanismo sencillo de control de errores de depuración.El ejemplo siguiente se genera un error de aserción si la dirección especificada no se encuentra dentro del montón local:

_ASSERTE( _CrtIsMemoryBlock( userData, size, &requestNumber, 
&filename, &linenumber ) );

Para obtener más información sobre cómo _CrtIsMemoryBlock se puede utilizar con otras funciones y macros de depuración, vea Utilizando las macros para comprobación e informes.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 Administración de memoria y el montón de depuración.

Requisitos

rutina

Encabezado necesario

_CrtIsMemoryBlock

<crtdbg.h>

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

bibliotecas

Versiones de depuración de Bibliotecas en tiempo de ejecución de C únicamente.

Ejemplo

Vea el ejemplo para el tema de _CrtIsValidHeapPointer .

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 La invocación de plataforma ejemplos.

Vea también

Referencia

Rutinas de depuración