C 参考手册

定义于头文件 <string.h>
char * strdup(const char *str1);
(动态内存 TR)

返回指向空终止字符串的指针,字符串是 str1 所指向字符串的副本。返回的指针必须传递给 free 以避免内存泄漏。

若错误发生,则返回空指针,并可能设置 errno

同所有来自动态内存 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);
}


参阅

(动态内存 TR)
分配字符串副本,至多到指定的大小
(函数)
复制一个字符串给另一个
(函数)
分配内存
(函数)