Versions Debug des fonctions d'allocation du tasDebug Versions of Heap Allocation Functions

La bibliothèque Runtime C contient des versions Debug spéciales des fonctions d'allocation du tas.The C run-time library contains special Debug versions of the heap allocation functions. Ces fonctions utilisent les noms des versions Release, suivis de _dbg.These functions have the same names as the Release versions with _dbg appended to them. 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.This topic describes the differences between the Release version of a CRT function and the _dbg version, using malloc and _malloc_dbg as examples.

Lorsque _DEBUG est défini, le CRT mappe tous les malloc appelle à _malloc_dbg.When _DEBUG is defined, the CRT maps all malloc calls to _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.Therefore, you do not need to rewrite your code using _malloc_dbg instead of malloc to receive the benefits while debugging.

Vous pouvez cependant appeler _malloc_dbg de façon explicite.You might want to call _malloc_dbg explicitly, however. Un appel explicite à _malloc_dbg présente en outre les avantages suivants :Calling _malloc_dbg explicitly has some added benefits:

  • suivi des allocations de type _CLIENT_BLOCK ;Tracking _CLIENT_BLOCK type allocations.

  • stockage du fichier source et du numéro de la ligne où la demande d'allocation a été effectuée.Storing the source file and line number where the allocation request occurred.

    Si vous ne souhaitez pas convertir votre malloc appelle à _malloc_dbg, vous pouvez obtenir les informations du fichier source en définissant _CRTDBG_MAP_ALLOC, ce qui entraîne le mappage du préprocesseur directement tous les appels à malloc à _malloc_dbg au lieu d’utiliser un wrapper autour de malloc.If you do not want to convert your malloc calls to _malloc_dbg, you can obtain the source file information by defining _CRTDBG_MAP_ALLOC, which causes the preprocessor to directly map all calls to malloc to _malloc_dbg instead of relying on a wrapper around 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.To track the separate types of allocations in client blocks, you must call _malloc_dbg directly and set the blockType parameter to _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 de fichier se rapportant à la source de la demande d’allocation n’est pas fourni.When _DEBUG is not defined, calls to malloc are not disturbed, calls to _malloc_dbg are resolved to malloc, the definition of _CRTDBG_MAP_ALLOC is ignored, and source file information pertaining to the allocation request is not provided. 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.Because malloc does not have a block type parameter, requests for _CLIENT_BLOCK types are treated as standard allocations.

Voir aussiSee Also

Techniques de débogage CRTCRT Debugging Techniques