_strdup, _wcsdup, _mbsdup
Duplikatszeichenfolgen.
Wichtig
_mbsdup kann in Anwendungen nicht verwendet werden, die im Windows-Runtime ausgeführt werden.Weitere Informationen finden Sie unter CRT-Funktionen nicht mit /ZW unterstützt.
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 zum Speicherort für die kopierte Zeichenfolge oder NULL zurück, wenn Speicher nicht zugeordnet werden kann.
Hinweise
Die _strdup-Funktionsaufrufe malloc, um den Speicherplatz für eine Kopie von strSource zugeordnet und kopiert dann strSource dem reservierten Platz.
_wcsdup und _mbsdup sind Breitzeichen- und Multibytezeichenversionen von _strdup. Die Argumente und der Rückgabewert von _wcsdup sind Breitzeichen-Zeichenfolgen; die von _mbsdup sind Mehrbyte-Zeichenfolgen. Diese drei Funktionen verhalten sich andernfalls identisch.
Zuordnung generischer Textroutinen
TCHAR.H-Routine |
_UNICODE & _MBCS nicht definiert |
_MBCS definiert |
_UNICODE definiert |
---|---|---|---|
_tcsdup |
_strdup |
_mbsdup |
_wcsdup |
Da _strdupmalloc aufgerufen wird, um Festplattenspeicher für die Kopie von strSource zuzuordnen, wird empfohlen, immer diesen Arbeitsspeicher freizugeben, indem die frei Routine in dem Zeiger aufruft, der durch den Aufruf von _strdup zurückgegeben wird.
Wenn _DEBUG und _CRTDBG_MAP_ALLOC definiert werden, sind _strdup und _wcsdup durch Aufrufe von _strdup_dbg und _wcsdup_dbg ersetzt, um das Debuggen von Speicherbelegungen zuzulassen. Weitere Informationen finden Sie unter _strdup_dbg, _wcsdup_dbg.
Anforderungen
Routine |
Erforderlicher Header |
---|---|
_strdup |
<string.h> |
_wcsdup |
<string.h> oder <wchar.h> |
_mbsdup |
<mbstring.h> |
Zusätzliche 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 );
}
.NET Framework-Entsprechung
Siehe auch
Referenz
Zeichenfolgenbearbeitung (CRT)
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