_strdup
, _wcsdup
, _mbsdup
Duplica cadeias de caracteres.
Importante
_mbsdup
não pode ser usada em aplicativos executados no Windows Runtime. Para obter mais informações, confira Funções do CRT sem suporte em aplicativos da Plataforma Universal do Windows.
Sintaxe
char *_strdup(
const char *strSource
);
wchar_t *_wcsdup(
const wchar_t *strSource
);
unsigned char *_mbsdup(
const unsigned char *strSource
);
Parâmetros
strSource
Cadeia de caracteres de origem com terminação nula.
Valor retornado
Cada uma dessas funções retorna um ponteiro para o local de armazenamento da cadeia de caracteres copiada ou NULL
se o armazenamento não puder ser alocado.
Comentários
A _strdup
função chama malloc
para alocar espaço de armazenamento para uma cópia e strSource
, em seguida, copia strSource
para o espaço alocado.
_wcsdup
e _mbsdup
são versões de caracteres largos e de caracteres multibyte de _strdup
. Os argumentos e o valor retornado de _wcsdup
são cadeias de caracteres largos. Os argumentos e o valor retornado de são cadeias de _mbsdup
caracteres multibyte. Caso contrário, essas três funções se comportam de forma idêntica.
Por padrão, o estado global dessa função tem como escopo o aplicativo. Para alterar esse comportamento, confira Estado global no CRT.
Mapeamentos de rotina de texto genérico
Rotina TCHAR.H |
_UNICODE e _MBCS não definidos |
_MBCS definido |
_UNICODE definido |
---|---|---|---|
_tcsdup |
_strdup |
_mbsdup |
_wcsdup |
Como _strdup
as chamadas malloc
para alocar espaço de armazenamento para a cópia de strSource
, é uma boa prática sempre liberar essa memória chamando a free
rotina no ponteiro retornado pela chamada para _strdup
.
Se _DEBUG
e _CRTDBG_MAP_ALLOC
são definidos _strdup
e _wcsdup
são substituídos por chamadas para _strdup_dbg
e _wcsdup_dbg
, para permitir a depuração de alocações de memória. Para obter mais informações, consulte _strdup_dbg
e _wcsdup_dbg
.
Requisitos
Rotina | Cabeçalho necessário |
---|---|
_strdup |
<string.h> |
_wcsdup |
<string.h> ou <wchar.h> |
_mbsdup |
<mbstring.h> |
Para obter informações sobre compatibilidade, consulte Compatibilidade.
Exemplo
// 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
Confira também
Manipulação de cadeia de caracteres
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