_CrtIsMemoryBlock

Vérifie qu'un bloc de mémoire spécifié est dans le tas local et qu'il a un identificateur type de bloc de tas de débogage valide (version debug uniquement).

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

Paramètres

  • [in] userData
    Pointeur vers le début du bloc de mémoire à vérifier.

  • [in] size
    taille du bloc spécifié (en octets).

  • [out] requestNumber
    Pointeur vers le numéro d'allocation de le bloc ou d' NULL.

  • [out] filename
    Pointeur vers le nom du fichier source qui a demandé le bloc ou NULL.

  • [out] linenumber
    Pointeur vers le numéro de ligne dans le fichier source ou NULL.

Valeur de retour

_CrtIsMemoryBlock retourne TRUEsi le bloc de mémoire spécifié se trouve dans le tas local et a un identificateur type de bloc de tas de débogage valide ; sinon, la fonction retourne FALSE.

Notes

La fonction d' _CrtIsMemoryBlock vérifie qu'un bloc de mémoire spécifié se trouve dans le tas local de l'application et qu'il a un identificateur en forme de bloc valide.Cette fonction peut également être utilisée pour obtenir le numéro de commande d'allocation d'objet et le nom de fichier source/numéro de ligne où l'allocation de bloc de mémoire a été initialement demandée.Passage des valeurs non null pour requestNumber, filename, ou des causes _CrtIsMemoryBlock de paramètres d' linenumber pour définir ces paramètres aux valeurs dans l'en-tête du débogage du bloc de mémoire, s'il trouve le bloc dans le tas local.Lorsque _DEBUG n'est pas défini, les appels à _CrtIsMemoryBlock sont supprimés pendant le prétraitement.

Si _CrtIsMemoryBlock échoue, il retourne FALSE et les paramètres de sortie sont initialisés aux valeurs par défaut : requestNumber et lineNumber sont définis à 0 et filename est défini à NULL.

Étant donné que cette fonction retourne TRUE ou FALSE, elle peut être passée à l'une des macros de _ASSERT créer un mécanisme simple de gestion des erreurs d'erreur de débogage.L'exemple suivant crée un échec d'assertion si l'adresse spécifiée ne se trouve pas dans le tas local :

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

Pour plus d'informations sur la façon dont _CrtIsMemoryBlock peut être utilisé avec d'autres fonctions et des macros de débogage, consultez À l'aide de les macros pour la vérification et la création de rapports.Pour plus d'informations sur la manière dont les blocs de mémoire sont alloués, initialisés, et gérés dans la version debug de tas de base, consultez gestion de la mémoire et le tas de débogage.

Configuration requise

routine

en-tête requis

_CrtIsMemoryBlock

<crtdbg.h>

Pour plus d'informations de compatibilité, consultez compatibilité dans l'introduction.

bibliothèques

Versions debug de Bibliothèques runtime C uniquement.

Exemple

Consultez l'exemple fourni pour la rubrique de _CrtIsValidHeapPointer .

Équivalent .NET Framework

Non applicable. Pour appeler la fonction C standard, utilisez PInvoke. Pour plus d'informations, consultez l' exemples d'appel de code non managé.

Voir aussi

Référence

Déboguez des routines