_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_l
wcsncat
_mbsncat
,_mbsncat_l
strncmp
, , wcsncmp
_mbsncmp
_mbsncmp_l
strncpy
, , _strncpy_l
_wcsncpy_l
wcsncpy
_mbsncpy
,_mbsncpy_l
_strnicmp
, , _wcsnicmp
_strnicmp_l
_mbsnicmp
_wcsnicmp_l
,_mbsnicmp_l
strrchr
, , wcsrchr
_mbsrchr
_mbsrchr_l
strspn
, , wcsspn
_mbsspn
_mbsspn_l