_strdup_dbg、_wcsdup_dbg
使用 malloc 的调试版本的 _strdup and _wcsdup 的版本。
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 );
参数
strSource
null 终止的源字符串。blockType
内存块的请求类型:_CLIENT_BLOCK 或 _NORMAL_BLOCK。filename
指向已请求分配操作的源文件名的指针或 NULL。linenumber
请求分配操作所在的源文件中的行数或 NULL。
返回值
如果无法分配存储,则其中每个函数都将返回一个指向复制字符串的存储位置的指针或 NULL。
备注
_strdup_dbg 和 _wcsdup_dbg 函数与 _strdup 和 _wcsdup 完全相同,只是当定义 _DEBUG 时,这些函数将使用 malloc 的调试版本和 _malloc_dbg 来为复制的字符串分配内存。 有关 _malloc_dbg 的调试功能的信息,请参阅 _malloc_dbg。
在大多数情况下,无需显式调用这些函数。 可以改为定义标志 _CRTDBG_MAP_ALLOC。 定义 _CRTDBG_MAP_ALLOC 后,对 _strdup 和 _wcsdup 的调用将分别重新映射到 _strdup_dbg 和 _wcsdup_dbg,同时会将 blockType 设置为 _NORMAL_BLOCK。 因此,无需显式调用这些函数,除非你希望将堆块标记为 _CLIENT_BLOCK。 有关块类型的详细信息,请参阅调试堆中的块类型。
一般文本例程映射
TCHAR.H 例程 |
未定义 _UNICODE 和 _MBCS |
已定义 _MBCS |
已定义 _UNICODE |
---|---|---|---|
_tcsdup_dbg |
_strdup_dbg |
_mbsdup |
_wcsdup_dbg |
要求
例程 |
必需的标头 |
---|---|
_strdup_dbg, _wcsdup_dbg |
<crtdbg.h> |
有关其他兼容性信息,请参见“简介”中的兼容性。
库
C 运行时库的所有调试版本。