_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. Informationen zum Ändern dieses Verhaltens finden Sie im Global state in the CRT.
Generische Textroutinzuordnungen
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
Zeichenfolgenmanipulation
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
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für