_strdup, _wcsdup, _mbsdup

Duplica cadenas.

Importante

_mbsdup no se puede usar en aplicaciones que se ejecutan en Windows en tiempo de ejecución. Para obtener más información, vea Funciones de CRT no admitidas en aplicaciones de la Plataforma universal de Windows.

Sintaxis

char *_strdup(
   const char *strSource
);
wchar_t *_wcsdup(
   const wchar_t *strSource
);
unsigned char *_mbsdup(
   const unsigned char *strSource
);

Parámetros

strSource
Cadena de origen terminada en NULL.

Valor devuelto

Cada una de estas funciones devuelve un puntero a la ubicación de almacenamiento de la cadena copiada o NULL si no se puede asignar el almacenamiento.

Comentarios

La _strdup función llama malloc a para asignar espacio de almacenamiento para una copia de strSource y, a continuación, copia strSource en el espacio asignado.

_wcsdup y _mbsdup son versiones de caracteres anchos y multibyte de _strdup. Los argumentos y el valor devuelto de son cadenas de _wcsdup caracteres anchos. Los argumentos y el valor devuelto de son cadenas de _mbsdup caracteres multibyte. Estas tres funciones se comportan exactamente igual.

De manera predeterminada, el estado global de esta función está limitado a la aplicación. Para cambiar este comportamiento, consulte Estado global en CRT.

Asignaciones de rutinas de texto genérico

Rutina TCHAR.H _UNICODE y _MBCS no definidos _MBCS definido _UNICODE definido
_tcsdup _strdup _mbsdup _wcsdup

Dado _strdup que llama malloc a para asignar espacio de almacenamiento para la copia de strSource, se recomienda liberar siempre esta memoria llamando a la free rutina en el puntero devuelto por la llamada a _strdup.

Si _DEBUG se definen _strdup y _CRTDBG_MAP_ALLOC y _wcsdup se reemplazan por llamadas a _strdup_dbg y _wcsdup_dbg, para permitir la depuración de asignaciones de memoria. Para más información, vea _strdup_dbg, _wcsdup_dbg.

Requisitos

Routine Encabezado necesario
_strdup <string.h>
_wcsdup <string.h> o <wchar.h>
_mbsdup <mbstring.h>

Para obtener más información sobre compatibilidad, consulte Compatibilidad.

Ejemplo

// 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

Consulte también

Manipulación de cadenas
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