_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 strSourcezuzuweisen, empfiehlt es sich, diesen Speicher immer freizugeben, indem die free Routine auf dem Zeiger aufgerufen wird, der vom Aufruf _strdupzurü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_dbgverwalten.

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