Nous recommandons d’utiliser Visual Studio 2017

_CrtIsMemoryBlock

 

Pour obtenir la dernière documentation sur Visual Studio 2017, consultez Documentation Visual Studio 2017.

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 débogage valide du tas (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 du bloc ou 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.

_CrtIsMemoryBlockRetourne TRUE si le bloc de mémoire spécifié se trouve dans le tas local et a un identificateur de type bloc de segment de mémoire debug valide ; sinon, la fonction retourne FALSE.

Le _CrtIsMemoryBlock fonction 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 de type valide. Cette fonction peut également être utilisée pour obtenir le numéro d’ordre d’allocation objet et le numéro de ligne/nom du fichier source où l’allocation de bloc de mémoire a été demandée à l’origine. En passant les valeurs non NULL pour le requestNumber, filename, ou linenumber causes de paramètres _CrtIsMemoryBlock pour définir ces paramètres pour les valeurs dans débogage en-tête du bloc de mémoire, si elle trouve le bloc dans le tas local. Lors de la _DEBUG n’est pas défini, les appels à _CrtIsMemoryBlock sont supprimés lors du prétraitement.

Si _CrtIsMemoryBlock échoue, il renvoie FALSE et les paramètres de sortie sont initialisées aux valeurs par défaut : requestNumber et lineNumber sont définies sur 0 et filename est défini sur NULL.

Étant donné que cette fonction retourne TRUE ou FALSE, il peut être passé à une de la _ASSERT macros pour créer une simple erreur de débogage mécanisme de gestion. 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 la _CrtIsMemoryBlock peut être utilisé avec d’autres fonctions de débogage et les macros, 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, voir CRT Debug Heap Details.

RoutineEn-tête requis
_CrtIsMemoryBlock<crtdbg.h>

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

Les versions Debug de les bibliothèques Runtime C uniquement.

Consultez l’exemple de la _CrtIsValidHeapPointer rubrique.

Non applicable. Pour appeler la fonction C standard, utilisez PInvoke. Pour plus d'informations, consultez Exemples d'appel de plateforme.

Routines de débogage

Afficher: