_strdup, _wcsdup, _mbsdup
重复字符串。
重要
_mbsdup 不能在 Windows 运行时执行的应用程序。有关更多信息,请参见 CRT 函数不支持与 /ZW。
char *_strdup(
const char *strSource
);
wchar_t *_wcsdup(
const wchar_t *strSource
);
unsigned char *_mbsdup(
const unsigned char *strSource
);
参数
- strSource
null 终止的源字符串。
返回值
如果不能分配,这些函数都返回一个指针发送回复制的字符串或 NULL 的存储位置存储。
备注
_strdup 函数调用 malloc 分配 strSource 副本存储空间然后复制 strSource 为分配空间。
_wcsdup 和 _mbsdup 是 _strdup的宽字符和多字节字符版本。 参数和返回 _wcsdup 的值是宽字符字符串;这些 _mbsdup 的多字节字符字符串。 这三个功能否则具有相同的行为。
一般文本例程映射
TCHAR.H 实例 |
未定义的_UNICODE & _MBCS |
定义的_MBCS |
定义的_UNICODE |
---|---|---|---|
_tcsdup |
_strdup |
_mbsdup |
_wcsdup |
由于 _strdup 调用 malloc 分配 strSource的副本的存储空间,最好通过调用对 _strdup的调用返回指针的 可用 实例始终释放该内存。
如果 _DEBUG 和 _CRTDBG_MAP_ALLOC 定义,_strdup 和 _wcsdup 替换调用 _strdup_dbg 和 _wcsdup_dbg 允许调试内存分配。 有关更多信息,请参见_strdup_dbg, _wcsdup_dbg。
要求
实例 |
必需的标头 |
---|---|
_strdup |
<string.h> |
_wcsdup |
<string.h> 或 <wchar.h> |
_mbsdup |
<mbstring.h> |
有关其他的兼容性信息,请参见 兼容性。
示例
// crt_strdup.c
#include <string.h>
#include <stdio.h>
int main( void )
{
char buffer[] = "This is the buffer text";
char *newstring;
printf( "Original: %s\n", buffer );
newstring = _strdup( buffer );
printf( "Copy: %s\n", newstring );
free( newstring );
}
.NET Framework 等效项
请参见
参考
strncat, _strncat_l, wcsncat, wcsncat_l, _mbsncat _mbsncat_l
strncmp, wcsncmp, _mbsncmp, _mbsncmp_l
strncpy, _strncpy_l, wcsncpy, _wcsncpy_l, _mbsncpy, _mbsncpy_l
_strnicmp, _wcsnicmp, _mbsnicmp, _strnicmp_l, _wcsnicmp_l, _mbsnicmp_l