Udostępnij za pośrednictwem


_strdup, _wcsdup, _mbsdup

Ciągi duplikaty.

Ważna uwagaWaż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

System::String::clone

Zobacz też

Informacje

Manipulowanie ciągami (CRT)

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