_strdup
, _wcsdup
_mbsdup
Dupliziert Zeichenfolgen.
Wichtig
_mbsdup
kann nicht in Anwendungen verwendet werden, die in Windows-Runtime ausgeführt werden. Weitere Informationen finden Sie im Artikel CRT functions not supported in Universal Windows Platform apps (In Apps für die universelle Windows-Plattform nicht unterstützte CRT-Funktionen).
Syntax
char *_strdup(
const char *strSource
);
wchar_t *_wcsdup(
const wchar_t *strSource
);
unsigned char *_mbsdup(
const unsigned char *strSource
);
Parameter
strSource
Mit NULL endende Quellzeichenfolge.
Rückgabewert
Jede dieser Funktionen gibt einen Zeiger auf den Speicherort für die kopierte Zeichenfolge zurück oder NULL
wenn speicher nicht zugewiesen werden kann.
Hinweise
Die _strdup
Funktion ruft auf malloc
, um Speicherplatz für eine Kopie von strSource
und dann strSource
in den zugewiesenen Speicherplatz zuzuweisen.
_wcsdup
und _mbsdup
sind Breitzeichen- und Multibytezeichenversionen von _strdup
. Die Argumente und der Rückgabewert _wcsdup
sind Zeichenfolgen mit breitem Zeichen. Die Argumente und der Rückgabewert sind _mbsdup
Multibyte-Zeichenfolgen. Diese drei Funktionen verhalten sich andernfalls identisch.
Standardmäßig gilt der globale Zustand dieser Funktion für die Anwendung. Wie Sie dieses Verhalten ändern, erfahren Sie unter Globaler Status in der CRT.
Mapping generischer Textroutinen
TCHAR.H -Routine |
_UNICODE und _MBCS nicht definiert |
_MBCS definiert |
_UNICODE definiert |
---|---|---|---|
_tcsdup |
_strdup |
_mbsdup |
_wcsdup |
Da _strdup
Aufrufe malloc
, um Speicherplatz für die Kopie strSource
zuzuweisen, empfiehlt es sich, diesen Speicher immer freizugeben, indem die free
Routine auf dem Zeiger aufgerufen wird, der vom Aufruf _strdup
zurückgegeben wird.
If _DEBUG
and _CRTDBG_MAP_ALLOC
are defined, _strdup
and _wcsdup
are replaced by calls to _strdup_dbg
and , to und _wcsdup_dbg
, to allow for debugging memory allocations. Weitere Informationen finden Sie unter _strdup_dbg
, _wcsdup_dbg
verwalten.
Anforderungen
Routine | Erforderlicher Header |
---|---|
_strdup |
<string.h> |
_wcsdup |
<string.h> oder <wchar.h> |
_mbsdup |
<mbstring.h> |
Weitere Informationen zur Kompatibilität finden Sie unter Kompatibilität.
Beispiel
// 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
Siehe auch
Zeichenfolgenbearbeitung
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