Comment : utiliser le tas de débogage
Mise à jour : novembre 2007
Cette rubrique s'applique à :
Édition |
Visual Basic |
C# |
C++ |
Web Developer |
---|---|---|---|---|
Express |
Natif uniquement |
|||
Standard |
Natif uniquement |
|||
Pro et Team |
Natif uniquement |
Légende du tableau :
Applicable |
|
Non applicable |
|
Commande ou commandes masquées par défaut. |
Tous les appels aux fonctions du tas, telles que malloc, free, calloc, realloc, new et delete, sont traduits dans les versions Debug de ces fonctions qui opèrent dans le tas de débogage. Lorsque vous libérez un bloc de mémoire, le tas de débogage vérifie automatiquement l'intégrité des mémoires tampons de chaque côté de votre zone allouée et envoie un rapport d'erreur si un remplacement a eu lieu.
Pour utiliser le tas de débogage
- Liez la version Debug de votre application à une version débogage de la bibliothèque Runtime C.
Pour changer un ou plusieurs champs de bits _crtDbgFlag et créer un nouvel état pour l'indicateur
Appelez _CrtSetDbgFlag alors que le paramètre newFlag a la valeur _CRTDBG_REPORT_FLAG (pour obtenir l'état actuel de _crtDbgFlag) et stockez la valeur retournée dans une variable temporaire.
Activez les bits en faisant une réunion logique OR (opérateur de bits de symbole |) de la variable temporaire et des masques de bits correspondants (représentés dans le code de l'application par des constantes manifestes).
Désactivez les autres bits en faisant une intersection logique AND (opérateur de bits de symbole &) entre la variable et un NOT (symbole ~ au niveau du bit) des masques de bits appropriés.
Appelez _CrtSetDbgFlag alors que le paramètre newFlag a la valeur stockée dans la variable temporaire afin de créer l'état de _crtDbgFlag.
Exemple
Par exemple, les lignes de code suivantes activent la détection automatique des fuites et désactivent la vérification pour les blocs de type _CRT_BLOCK:
// Get current flag
int tmpFlag = _CrtSetDbgFlag( _CRTDBG_REPORT_FLAG );
// Turn on leak-checking bit.
tmpFlag |= _CRTDBG_LEAK_CHECK_DF;
// Turn off CRT block checking bit.
tmpFlag &= ~_CRTDBG_CHECK_CRT_DF;
// Set flag to the new value.
_CrtSetDbgFlag( tmpFlag );