_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 等效项

System::String::Clone

请参见

参考

字符串操作(crt)

memset, wmemset

strcat, wcscat, _mbscat

strcmp, wcscmp, _mbscmp

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

strrchr, wcsrchr, _mbsrchr, _mbsrchr_l

strspn, wcsspn, _mbsspn, _mbsspn_l