Compartir a través de


_strdup, _wcsdup, _mbsdup

Duplica las 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 con /ZW.

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 para la cadena copiada o NULL si el almacenamiento no puede estar asignado.

Comentarios

Las llamadas de función malloc de _strdup para asignar espacio de almacenamiento para una copia de strSource y después copian strSource el espacio asignado.

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

Asignaciones de rutina de texto genérico

Rutina TCHAR.H

_UNICODE y _MBCS no definidos

_MBCS definido

_UNICODE definido

_tcsdup

_strdup

_mbsdup

_wcsdup

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

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

Requisitos

Rutina

Encabezado necesario

_strdup

<string.h>

_wcsdup

<string.h> o <wchar.h>

_mbsdup

<mbstring.h>

Para obtener información adicional de compatibilidad, vea 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 );
}
  

Equivalente en .NET Framework

System::String::Clone

Vea también

Referencia

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