Share via


Versions Debug des fonctions d'allocation du tas

Mise à jour : novembre 2007

Cette rubrique s'applique à :

Édition

Visual Basic

C#

C++

Web Developer

Express

La rubrique ne s'applique pas La rubrique ne s'applique pas

Natif uniquement

La rubrique ne s'applique pas

Standard

La rubrique ne s'applique pas La rubrique ne s'applique pas

Natif uniquement

La rubrique ne s'applique pas

Pro et Team

La rubrique ne s'applique pas La rubrique ne s'applique pas

Natif uniquement

La rubrique ne s'applique pas

Légende du tableau :

La rubrique s'applique

Applicable

La rubrique ne s'applique pas

Non applicable

La rubrique s'applique mais la commande est masquée par défaut

Commande ou commandes masquées par défaut.

La bibliothèque Runtime C contient des versions Debug spéciales des fonctions d'allocation du tas. Ces fonctions utilisent les noms des versions Release, suivis de _dbg. Cette rubrique décrit les différences entre la version Release d'une fonction CRT et la version _dbg à partir d'exemples basés sur malloc et _malloc_dbg.

Lorsque _DEBUG est défini, le CRT mappe tous les appels malloc sur _malloc_dbg. Il est donc inutile de réécrire votre code en utilisant _malloc_dbg à la place de malloc pour bénéficier de ses avantages pendant le débogage.

Vous pouvez cependant appeler _malloc_dbg de façon explicite. Un appel explicite à _malloc_dbg présente en outre les avantages suivants :

  • suivi des allocations de type _CLIENT_BLOCK ;

  • stockage du fichier source et du numéro de la ligne où la demande d'allocation a été effectuée.

Si vous ne souhaitez pas convertir vos appels malloc à _malloc_dbg, vous pouvez obtenir les informations du fichier source en définissant _CRTDBG_MAP_ALLOC ; le préprocesseur mappera alors tous les appels à malloc directement sur _malloc_dbg au lieu d'utiliser un wrapper autour de malloc.

Pour effectuer le suivi des différents types d'allocations dans les blocs client, vous devez appeler _malloc_dbg directement et affecter au paramètre blockType la valeur _CLIENT_BLOCK.

Lorsque _DEBUG n'est pas défini, les appels à malloc ne sont pas perturbés, les appels à _malloc_dbg sont résolus en malloc, la définition de _CRTDBG_MAP_ALLOC est ignorée et les informations des fichiers sources qui se rapportent à la demande d'allocation ne sont pas fournies. Dans la mesure où malloc ne possède aucun paramètre de type de bloc, les demandes de types _CLIENT_BLOCK sont traitées comme des allocations standard.

Voir aussi

Autres ressources

Techniques de débogage CRT