复制字符串。
重要
_mbsdup 无法用于在 Windows 运行时中执行的应用程序。 有关详细信息,请参阅通用 Windows 平台应用中不支持的 CRT 函数。
语法
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 的参数和返回值为多字节字符字符串。 否则这三个函数否则具有相同行为。
默认情况下,此函数的全局状态范围限定为应用程序。 若要更改此行为,请参阅 CRT 中的全局状态。
一般文本例程映射
TCHAR.H 例程 |
_UNICODE 和 _MBCS 未定义 |
_MBCS 已定义 |
_UNICODE 已定义 |
|---|---|---|---|
_tcsdup |
_strdup |
_mbsdup |
_wcsdup |
因为 _strdup 调用 malloc 来为 strSource 的副本分配存储空间,所以最好始终通过调用由对 _strdup 的调用返回的指针上的 free 例程来释放此内存。
如果定义了 _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 );
}
Original: This is the buffer text
Copy: This is the buffer text
另请参阅
字符串操作
%>
.- .
.- .