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 に定義した場合にのみ利用可能であることが保証されます。

目次

パラメータ

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)
指定サイズまでの文字列のコピーを割り当てる
(関数)
文字列を別の文字列にコピーする
(関数)
メモリを割り当てる
(関数)