_strdup, _wcsdup, _mbsdup

Duplica le stringhe.

Importante

_mbsdup non può essere utilizzato in applicazioni che vengono eseguite in Windows Runtime. Per altre informazioni, vedere Funzioni CRT non supportate nelle app della piattaforma UWP (Universal Windows Platform).

Sintassi

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

Parametri

strSource
Stringa di origine con terminazione null.

Valore restituito

Ognuna di queste funzioni restituisce un puntatore alla posizione di archiviazione per la stringa copiata o NULL se l'archiviazione non può essere allocata.

Osservazioni:

La _strdup funzione chiama malloc per allocare spazio di archiviazione per una copia di strSource e quindi copia strSource nello spazio allocato.

_wcsdup e _mbsdup sono versioni con caratteri wide e caratteri multibyte di _strdup. Gli argomenti e il valore restituito di sono stringhe di _wcsdup caratteri wide. Gli argomenti e il valore restituito di sono stringhe di _mbsdup caratteri multibyte. A parte ciò, queste tre funzioni si comportano in modo identico.

Per impostazione predefinita, lo stato globale di questa funzione è limitato all'applicazione. Per modificare questo comportamento, vedere Stato globale in CRT.

Mapping di routine di testo generico

TCHAR.H Routine _UNICODE e _MBCS non definito _MBCS Definito _UNICODE Definito
_tcsdup _strdup _mbsdup _wcsdup

Poiché _strdup chiama malloc per allocare spazio di archiviazione per la copia di strSource, è consigliabile rilasciare sempre questa memoria chiamando la free routine sul puntatore restituito dalla chiamata a _strdup.

Se _DEBUG e _CRTDBG_MAP_ALLOC sono definiti _strdup e _wcsdup vengono sostituiti da chiamate a _strdup_dbg e _wcsdup_dbg, per consentire il debug delle allocazioni di memoria. Per altre informazioni, vedere _strdup_dbge _wcsdup_dbg.

Requisiti

Ciclo Intestazione obbligatoria
_strdup <string.h>
_wcsdup <string.h> oppure <wchar.h>
_mbsdup <mbstring.h>

Per altre informazioni sulla compatibilità, vedere Compatibility (Compatibilità).

Esempio

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

Vedi anche

Manipolazione delle stringhe
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