_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
См. также
Ссылки
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