_strdup, _wcsdup, _mbsdup
Ciągi duplikaty.
Ważne |
---|
_mbsdupNie można używać w aplikacji, których wykonywanie w Środowisko wykonawcze systemu Windows.Aby uzyskać więcej informacji, zobacz CRT funkcje nie obsługiwane przez /ZW. |
char *_strdup(
const char *strSource
);
wchar_t *_wcsdup(
const wchar_t *strSource
);
unsigned char *_mbsdup(
const unsigned char *strSource
);
Parametry
- strSource
Ciąg zakończony wartością zerową źródła.
Wartość zwracana
Każda z tych funkcji zwraca wskaźnik do miejsca przechowywania skopiowany ciąg lub NULL Jeśli nie można przydzielić pamięci masowej.
Uwagi
_strdup Wywołań funkcji malloc do alokacji miejsca do magazynowania dla kopii strSource , a następnie skopiuje strSource do przydzielonego miejsca.
_wcsdupi _mbsdup szerokich znaków i znaków wielobajtowych wersje _strdup.Argumenty i wartości zwracanej przez _wcsdup są ciągami szerokich znaków; tych z _mbsdup są ciągami znaków wielobajtowych.Zmienia tych trzech funkcji zachowanie takich samych nazwach.
Tekst rodzajowy rutynowych mapowania
TCHAR.Rozpoczęto wykonywanie procedury h |
_UNICODE & _MBCS nie zdefiniowany |
_MBCS, definicja |
_UNICODE, definicja |
---|---|---|---|
_tcsdup |
_strdup |
_mbsdup |
_wcsdup |
Ponieważ _strdup wywołania malloc do alokacji miejsca do magazynowania dla kopii strSource, jest dobrym rozwiązaniem zawsze zwalnia tej pamięci przez wywołanie wolnego rutynowych na wskaźnik, który jest zwracany przez wywołanie _strdup.
Jeśli _DEBUG i _CRTDBG_MAP_ALLOC są zdefiniowane, _strdup i _wcsdup są zastępowane przez wywołania _strdup_dbg i _wcsdup_dbg aby umożliwić debugowanie alokacji pamięci.Aby uzyskać więcej informacji, zobacz _strdup_dbg, _wcsdup_dbg.
Wymagania
Rozpoczęto wykonywanie procedury |
Wymaganego nagłówka |
---|---|
_strdup |
<string.h> |
_wcsdup |
<string.h> lub <wchar.h> |
_mbsdup |
<mbstring.h> |
Aby uzyskać dodatkowe informacje o zgodności, zobacz Zgodność.
Przykład
// 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 );
}
Odpowiednik w programie .NET Framework
Zobacz też
Informacje
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