Freigeben über


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

Zeichenfolgenbearbeitung
memset, wmemset
strcat, wcscat_mbscat
strcmp, wcscmp_mbscmp
strncat, , _strncat_lwcsncat, _wcsncat_l, , _mbsncat_mbsncat_l
strncmp, , wcsncmp_mbsncmp_mbsncmp_l
strncpy, , _strncpy_lwcsncpy, _wcsncpy_l, , _mbsncpy_mbsncpy_l
_strnicmp, , _wcsnicmp_mbsnicmp, _strnicmp_l, , _wcsnicmp_l_mbsnicmp_l
strrchr, , wcsrchr_mbsrchr_mbsrchr_l
strspn, , wcsspn_mbsspn_mbsspn_l