Versions de débogage des fonctions d’allocation du tas

La bibliothèque CRT (C Runtime) contient des versions de débogage spéciales des fonctions d’allocation de tas. Ces fonctions ont les mêmes noms que les versions release avec _dbg les ajouts. Cet article décrit les différences entre la version Release d’une fonction CRT et la _dbg version, en utilisant malloc et _malloc_dbg en tant qu’exemples.

Comportement dans les builds de débogage

Lorsqu’il _DEBUG est défini, le CRT mappe tous les malloc appels à _malloc_dbg. Par conséquent, vous n’avez pas besoin de réécrire votre code _malloc_dbg au lieu de recevoir les avantages lors du malloc 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 malloc appels _malloc_dbgen , vous pouvez obtenir les informations du fichier source en définissant _CRTDBG_MAP_ALLOC, ce qui entraîne le mappage direct de tous les appels à malloc_malloc_dbg tous les appels au lieu de s’appuyer sur un wrapper autour mallocde .

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.

Comportement dans les builds sans débogage

Lorsqu’il _DEBUG n’est pas défini, les appels à malloc ne sont pas dérangés, les appels à _malloc_dbg résoudre sont résolus mallocen , la définition d’est _CRTDBG_MAP_ALLOC ignorée et les informations de fichier source relatives à la demande d’allocation ne sont pas fournies. Comme malloc n’a pas de paramètre de type de bloc, les demandes de _CLIENT_BLOCK types sont traitées comme des allocations standard.

Voir aussi

Techniques de débogage CRT