Partager via


_CrtIsMemoryBlock

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

Syntaxe

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

Paramètres

userData
Pointeur indiquant le début d’un bloc de mémoire à vérifier.

size
Taille du bloc spécifié (en octets).

requestNumber
Pointeur désignant le numéro d’allocation du bloc ou NULL.

filename
Pointeur désignant le nom du fichier source qui a demandé le bloc ou NULL.

lineNumber
Pointeur désignant le numéro de ligne dans le fichier source ou NULL.

Valeur retournée

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

Notes

La fonction _CrtIsMemoryBlock vérifie qu’un bloc de mémoire spécifié est dans le tas local de l’application et qu’il a un identificateur de type de bloc valide. Cette fonction peut également être utilisée pour obtenir le numéro d’ordre d’allocation d’objet et le numéro de ligne/nom du fichier source où l’allocation de bloc de mémoire a été initialement demandée. Une valeur non transmise dans un , ou paramètre entraîne _CrtIsMemoryBlock la définition du paramètre sur la valeur dans l’en-têteNULL de débogage du bloc de mémoire, si elle trouve le bloc dans le tas local.lineNumber filenamerequestNumber Quand _DEBUG n’est pas défini, les appels à _CrtIsMemoryBlock sont supprimés lors du prétraitement.

En _CrtIsMemoryBlock cas d’échec, elle retourne FALSEet les paramètres de sortie sont initialisés en valeurs par défaut : requestNumber et lineNumber sont définis sur 0 et filename sont définis sur NULL.

Étant donné que cette fonction retourne TRUE ou FALSE, elle peut être passée à l’une _ASSERT des macros pour créer un mécanisme de gestion des erreurs de débogage de base. L’exemple suivant provoque un échec d’assertion si l’adresse spécifiée n’est pas située dans le tas local :

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

Pour plus d’informations sur _CrtIsMemoryBlock l’utilisation d’autres fonctions et macros de débogage, consultez Macros pour la création de rapports. Pour plus d’informations sur la façon dont les blocs de mémoire sont alloués, initialisés et gérés dans la version de débogage du tas de base, consultez les détails du tas de débogage CRT.

Spécifications

Routine En-tête requis
_CrtIsMemoryBlock <crtdbg.h>

Pour plus d’informations sur la compatibilité, consultez Compatibility.

Bibliothèques

Uniquement les versions de débogage des bibliothèques Runtime C.

Exemple

Consultez l’exemple de l’article _CrtIsValidHeapPointer .

Voir aussi

Routines de débogage