Aracılığıyla paylaş


_strdup, _wcsdup, _mbsdup

Dizeleri çoğaltır.

Önemli

_mbsdupWindows Çalışma Zamanı yürütülen uygulamalarda kullanılamaz. Daha fazla bilgi için bkz. Evrensel Windows Platformu uygulamalarında desteklenmeyen CRT işlevleri.

Sözdizimi

char *_strdup(
   const char *strSource
);
wchar_t *_wcsdup(
   const wchar_t *strSource
);
unsigned char *_mbsdup(
   const unsigned char *strSource
);

Parametreler

strSource
Null olarak sonlandırılan kaynak dize.

Dönüş değeri

Bu işlevlerin her biri, kopyalanan dizenin depolama konumuna veya NULL depolama ayrılamıyorsa bir işaretçi döndürür.

Açıklamalar

İşlev, bir kopyası strSource için depolama alanı ayırmayı çağırır malloc ve ardından ayrılan alana kopyalarstrSource._strdup

_wcsdup ve _mbsdup geniş karakterli ve çok baytlı sürümleridir _strdup. bağımsız değişkenleri ve dönüş değeri _wcsdup geniş karakterli dizelerdir. bağımsız değişkenleri ve dönüş değeri _mbsdup çok baytlı karakter dizeleridir. Bu üç işlev aynı şekilde davranır.

Varsayılan olarak, bu işlevin genel durumunun kapsamı uygulama olarak belirlenmiştir. Bu davranışı değiştirmek için bkz. CRT'de Genel durum.

Genel metin yordamı eşlemeleri

TCHAR.H Rutin _UNICODE ve _MBCS tanımlanmadı _MBCS Tanımlanan _UNICODE Tanımlanan
_tcsdup _strdup _mbsdup _wcsdup

_strdup kopyası strSourceiçin depolama alanı ayırmaya yönelik çağrılar malloc olduğundan, çağrısı tarafından _strdupdöndürülen işaretçide yordamını çağırarak free bu belleği serbest bırakmak her zaman iyi bir uygulamadır.

ve _CRTDBG_MAP_ALLOC tanımlanırsa _strdup_DEBUG ve _wcsdup bellek ayırmalarında hata ayıklamaya izin vermek için ve _wcsdup_dbgçağrılarıyla _strdup_dbg değiştirilir. Daha fazla bilgi için bkz. _strdup_dbg, _wcsdup_dbg.

Gereksinimler

Yordam Gerekli başlık
_strdup <string.h>
_wcsdup <string.h> veya <wchar.h>
_mbsdup <mbstring.h>

Daha fazla uyumluluk bilgisi için bkz . Uyumluluk.

Örnek

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

Ayrıca bkz.

Dize işleme
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