C语言中strdup()函数的目的是什么?


当前回答

在POSIX兼容系统中,strdup和strndup被定义为:

char *strdup(const char *str);
char *strndup(const char *str, size_t len);

类的副本分配了足够的内存 String str,进行复制,并返回指向它的指针。

该指针随后可以用作free函数的参数。

如果可用内存不足,则返回NULL,并将errno设置为 ENOMEM。

strndup()函数从字符串str复制最多len个字符,总是null,终止复制的字符串。

其他回答

它所做的最有价值的事情是为您提供与第一个相同的另一个字符串,而不需要您自己分配内存(位置和大小)。但是,如前所述,您仍然需要释放它(但这也不需要进行数量计算)。

在POSIX兼容系统中,strdup和strndup被定义为:

char *strdup(const char *str);
char *strndup(const char *str, size_t len);

类的副本分配了足够的内存 String str,进行复制,并返回指向它的指针。

该指针随后可以用作free函数的参数。

如果可用内存不足,则返回NULL,并将errno设置为 ENOMEM。

strndup()函数从字符串str复制最多len个字符,总是null,终止复制的字符串。

它通过运行传入字符串的malloc和strcpy来复制传入的字符串。malloc'ed缓冲区返回给调用者,因此需要在返回值上自由运行。

没有必要重复其他答案,但请注意,从C的角度来看,strdup()可以做任何它想做的事情,因为它不是任何C标准的一部分。但是,POSIX.1-2001定义了它。

strdup()函数是字符串重复的简写,它接受一个参数作为字符串常量或字符串字面量,并为字符串分配足够的空间,并在分配的空间中写入相应的字符,最后将分配的空间的地址返回给调用例程。