_strdup, _wcsdup, _mbsdup
Stringhe duplicate.
Importante
_mbsdup non può essere utilizzato nelle applicazioni eseguite in Windows Runtime.Per ulteriori informazioni, vedere Funzioni CRT non supportate con /ZW.
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 al percorso di memorizzazione per la stringa copiata o NULL se la memoria non può essere allocata.
Note
La funzione _strdup chiama malloc per allocare spazio in memoria per una copia di strSource e poi copia strSource nello spazio allocato.
_wcsdup e _mbsdup sono versioni a caratteri di tipo "wide" e di caratteri multibyte di _strdup. Gli argomenti e il valore restituito di _wcsdup sono stringhe di caratteri di tipo "wide", quelli di _mbsdup sono stringhe di caratteri multibyte. Altrimenti queste tre funzioni si comportano in modo identico.
Mapping di routine di testo generico
Routine TCHAR.H |
_UNICODE & _MBCS non definiti |
_MBCS definito |
_UNICODE definito |
---|---|---|---|
_tcsdup |
_strdup |
_mbsdup |
_wcsdup |
Poiché _strdup chiama malloc per allocare spazio in memoria per la copia di strSource, è consigliabile rilasciare sempre questa memoria chiamando la routine free sul puntatore restituito dalla chiamata a _strdup.
Se _DEBUG e _CRTDBG_MAP_ALLOC sono definiti, _strdup e _wcsdup vengono sostituite da chiamate a _strdup_dbg e _wcsdup_dbg per consentire di eseguire il debugging per le allocazioni della memoria. Per ulteriori informazioni, vedere _strdup_dbg, _wcsdup_dbg.
Requisiti
Routine |
Intestazione obbligatoria |
---|---|
_strdup |
<string.h> |
_wcsdup |
<string.h> o <wchar.h> |
_mbsdup |
<mbstring.h> |
Per ulteriori informazioni sulla compatibilità, vedere 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 );
}
Equivalente .NET Framework
Vedere anche
Riferimenti
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