_strdup_dbg, _wcsdup_dbg


For the latest documentation on Visual Studio 2017, see Visual Studio 2017 Documentation.

Versions of _strdup and _wcsdup that use the debug version of malloc.

char *_strdup_dbg(  
   const char *strSource,  
   int blockType,  
   const char *filename,  
   int linenumber   
wchar_t *_wcsdup_dbg(  
   const wchar_t *strSource,  
   int blockType,  
   const char *filename,  
   int linenumber   


Null-terminated source string.

Requested type of memory block: _CLIENT_BLOCK or _NORMAL_BLOCK.

Pointer to name of source file that requested allocation operation or NULL.

Line number in source file where allocation operation was requested or NULL.

Each of these functions returns a pointer to the storage location for the copied string or NULL if storage cannot be allocated.

The _strdup_dbg and _wcsdup_dbg functions are identical to _strdup and _wcsdup except that, when _DEBUG is defined, these functions use the debug version of malloc, _malloc_dbg, to allocate memory for the duplicated string. For information on the debugging features of _malloc_dbg, see _malloc_dbg.

You do not need to call these functions explicitly in most cases. Instead, you can define the flag _CRTDBG_MAP_ALLOC. When _CRTDBG_MAP_ALLOC is defined, calls to _strdup and _wcsdup are remapped to _strdup_dbg and _wcsdup_dbg, respectively, with the blockType set to _NORMAL_BLOCK. Thus, you do not need to call these functions explicitly unless you want to mark the heap blocks as _CLIENT_BLOCK. For more information on block types, see Types of blocks on the debug heap.

Generic-Text Routine Mappings

TCHAR.H routine_UNICODE & _MBCS not defined_MBCS defined_UNICODE defined
RoutineRequired header
_strdup_dbg, _wcsdup_dbg<crtdbg.h>

For additional compatibility information, see Compatibility in the Introduction.

All debug versions of the C run-time libraries.


String Manipulation
_strdup, _wcsdup, _mbsdup
Debug Versions of Heap Allocation Functions