_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
filename
requestNumber
Quand _DEBUG
n’est pas défini, les appels à _CrtIsMemoryBlock
sont supprimés lors du prétraitement.
En _CrtIsMemoryBlock
cas d’échec, elle retourne FALSE
et 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
.