Namespaces
Variants

strdup

From cppreference.net
Определено в заголовке <string.h>
char * strdup ( const char * str1 ) ;
(динамическая память TR)

Возвращает указатель на байтовую строку, завершающуюся нулевым символом, которая является дубликатом строки, на которую указывает str1 . Полученный указатель должен быть передан в free во избежание утечки памяти.

Если возникает ошибка, возвращается нулевой указатель, и errno может быть установлен.

Как и все функции из Dynamic Memory TR, strdup гарантированно доступна только в том случае, если реализация определяет __STDC_ALLOC_LIB__ и если пользователь определяет __STDC_WANT_LIB_EXT2__ как целочисленную константу 1 перед включением заголовка string.h .

Содержание

Параметры

str1 - указатель на дублируемую нуль-терминированную байтовую строку

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

Указатель на вновь выделенную строку или нулевой указатель, если произошла ошибка.

Примечания

Функция идентична функции POSIX strdup .

Пример

#ifdef __STDC_ALLOC_LIB__
#define __STDC_WANT_LIB_EXT2__ 1
#else
#define _POSIX_C_SOURCE 200809L
#endif
#include <string.h>
#include <assert.h>
#include <stdlib.h>
int main(void)
{
    const char *s1 = "String";
    char *s2 = strdup(s1);
    assert(strcmp(s1, s2) == 0);
    free(s2);
}

Смотрите также

(dynamic memory TR)
выделяет копию строки до указанного размера
(функция)
копирует одну строку в другую
(функция)
выделяет память
(функция)