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


_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_lwcsncat_mbsncat,_mbsncat_l
strncmp, , wcsncmp_mbsncmp_mbsncmp_l
strncpy, , _strncpy_l_wcsncpy_lwcsncpy_mbsncpy,_mbsncpy_l
_strnicmp, , _wcsnicmp_strnicmp_l_mbsnicmp_wcsnicmp_l,_mbsnicmp_l
strrchr, , wcsrchr_mbsrchr_mbsrchr_l
strspn, , wcsspn_mbsspn_mbsspn_l