_strdup, _wcsdup, _mbsdup
Cadeias de caracteres duplicatas.
Importante
_mbsdup não pode ser usado em aplicativos que executam no Tempo de Execução do Windows.Para obter mais informações, consulte Funções CRT sem suporte pelo /ZW.
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 terminada com Null.
Valor de retorno
Cada uma dessas funções retorna um ponteiro para o local de armazenamento para a cadeia de caracteres copiada ou NULL se o armazenamento não pode ser atribuído.
Comentários
As chamadas de função malloc de _strdup para alocar o espaço de armazenamento para uma cópia de strSource e copie strSource ao espaço alocado.
_wcsdup e _mbsdup são versões de caracteres largos e de multibyte de _strdup. Os argumentos e o valor de retorno de _wcsdup são cadeias de caracteres largos; _mbsdup são cadeias de caracteres de vários bytes. Essas três funções se comportam de forma idêntica.
Mapeamentos da rotina de texto genérico
Rotina TCHAR.H |
_UNICODE & _MBCS não definido |
_MBCS definido |
_UNICODE definido |
---|---|---|---|
_tcsdup |
_strdup |
_mbsdup |
_wcsdup |
Como _strdup chama malloc para alocar o espaço de armazenamento para a cópia de strSource, é uma prática recomendada sempre liberar a memória chamando a rotina de livre no ponteiro que é retornado pela chamada a _strdup.
Se _DEBUG e _CRTDBG_MAP_ALLOC são definidos, _strdup e _wcsdup são substituídos por chamadas a _strdup_dbg e a _wcsdup_dbg para permitir depuração alocações de memória. Para obter mais informações, consulte _strdup_dbg, _wcsdup_dbg.
Requisitos
Rotina |
Cabeçalho necessário |
---|---|
_strdup |
<string.h> |
_wcsdup |
<string.h> ou <wchar.h> |
_mbsdup |
<mbstring.h> |
Para obter informações adicionais 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 );
}
Equivalência do .NET Framework
Consulte também
Referência
Manipulação da cadeia de caracteres (CRT)
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