_strdup, _wcsdup, _mbsdup

Повторяющиеся строки.

Важно!

_mbsdup не может использоваться в приложениях, запускаемых в среде выполнения Windows. Дополнительные сведения: Функции CRT, которые не поддерживаются в приложениях универсальной платформы Windows.

Синтаксис

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

Параметры

strSource
Исходная строка, завершающаяся символом NULL.

Возвращаемое значение

Каждая из этих функций возвращает указатель на расположение хранилища для скопированной строки или NULL если хранилище не может быть выделено.

Замечания

Функция _strdup вызывает malloc выделение дискового пространства для копии strSource , а затем копирует strSource в выделенное пространство.

Функции _wcsdup и _mbsdup являются версиями функции _strdup для расширенных и многобайтовых символов. Аргументы и возвращаемые значения _wcsdup являются строками с широкими символами. Аргументы и возвращаемое значение _mbsdup являются многобайтовыми строками. В остальном эти три функции ведут себя идентично.

По умолчанию глобальное состояние этой функции ограничивается приложением. Чтобы изменить это поведение, см . статью "Глобальное состояние" в CRT.

Сопоставления подпрограмм универсального текста

TCHAR.H Обычной _UNICODE и _MBCS не определен _MBCS Определенные _UNICODE Определенные
_tcsdup _strdup _mbsdup _wcsdup

Так как _strdup вызовы malloc выделения дискового пространства для копии strSourceрекомендуется всегда освобождать эту память, вызывая free подпрограмму на указатель, возвращаемый вызовом _strdup.

Если _DEBUG и _CRTDBG_MAP_ALLOC определены, _strdup_wcsdup а также заменяются вызовами _strdup_dbg и _wcsdup_dbgпозволяют выполнять отладку выделения памяти. Дополнительные сведения см. в разделе _strdup_dbg, _wcsdup_dbg.

Требования

Маршрут Обязательный заголовок
_strdup <string.h>
_wcsdup <string.h> или <wchar.h>
_mbsdup <mbstring.h>

Дополнительные сведения о совместимости см. в разделе Совместимость.

Пример

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

См. также

Обработка строк
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