Поделиться через


_strdup, _wcsdup, _mbsdup

Дублирует строки.

Важно!

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

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 представляют собой многобайтовые строки. В остальных случаях эти три функции ведут себя идентично.

Универсальное текстовое сопоставление функций

Подпрограмма 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 );
}
  

Эквивалент в .NET Framework

System::String::Clone

См. также

Ссылки

Управление строками (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