C言語学習ポータル(無料版) 学習コンテンツ 関数リファレンス strdup

🔧 文字列 ・ string.h ・ C23

strdup の使い方

C言語 標準ライブラリ関数リファレンス(無料公開)

書式

char *strdup(const char *s);

どんな関数か

文字列を複製し、複製先の領域をmallocで新たに確保して返す。C23で標準化されたが、以前からPOSIXや多くの処理系で長らく使われてきた便利な文字列複製関数。 glibcなどでは以前から独自拡張として提供されてきたが、C23でようやく標準関数として整理された。

使用例

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(void) {
    char *copy = strdup("hello");
    if (copy) {
        puts(copy);
        free(copy);
    }
    return 0;
}

つまずきやすい注意点

⚠️ 戻り値は動的確保されたメモリなので、使い終わったら必ずfreeする。忘れるとメモリリークになる。

アプリの関数リファレンスで引く(無料・登録不要) 関数一覧へ

strdup と一緒に使う関数

strcpy文字列をコピー先バッファへコピーする。コピー先のサイズを一切考慮しないため、コピー元がコピー先より長いとバッファオーバー… malloc指定バイト数のメモリ領域をヒープから動的に確保し、先頭アドレスを返す。確保した内容は初期化されない(不定値)ため、必要な… freemalloc/calloc/reallocで確保したメモリ領域を解放する。解放後は同じポインタを再利用してはいけない(必…

同じ分類(文字列)の関数

memcmp memcpy memmove memset memset_explicit strcat strchr strcmp strcoll strcpy strcspn strerror strlen strncat strncmp strncpy

もっと先へ:ポインタ・メモリ・ファイル入出力・セキュアコーディングを含む全26トラックと、段位検定・模試のフルセットは完全版に収録しています。

完全版(BOOTH)を見る