名前空間
変種
操作

strdup

提供: cppreference.com
< c‎ | experimental‎ | dynamic
ヘッダ <string.h> で定義
char * strdup(const char *str1);
(dynamic memory TR)

str1 の指す文字列の複製となるヌル終端バイト文字列を指すポインタを返します。 メモリリークを回避するためには、返されたポインタは free に渡されなければなりません。

エラーが発生した場合は、ヌルポインタが返され、 errno が設定されるかもしれません。

Dynamic Memory TR のすべての関数と同様に、 strdup は処理系によって __STDC_ALLOC_LIB__ が定義されており、 string.h をインクルードする前にユーザが __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)
指定されたサイズまで文字列のコピーを確保します
(関数) [edit]
文字列を別の文字列へコピーします
(関数) [edit]
メモリを確保します
(関数) [edit]