命名空间
变体
操作

strdup

来自 cppreference.cn
< c‎ | 实验性‎ | 动态
定义于头文件 <string.h>
char * strdup( const char *str1 );
(动态内存 TR)

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

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

与动态内存 TR 中的所有函数一样,仅当实现定义了 __STDC_ALLOC_LIB__ 且用户在包含 string.h 之前将 __STDC_WANT_LIB_EXT2__ 定义为整数常量 1 时,才保证 strdup 可用。

目录

[编辑] 参数

str1 - 指向要复制的以空字符结尾的字节字符串的指针

[编辑] 返回值

指向新分配字符串的指针,如果发生错误则为 null 指针。

[编辑] 注意

该函数与 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)
分配一个指定大小的字符串副本
(函数) [编辑]
将一个字符串复制到另一个字符串
(函数) [编辑]
分配内存
(函数) [编辑]