strdup
时间: 2023-09-05 10:10:42 浏览: 58
`strdup`是一个C语言标准库函数,其作用是将一个字符串复制到新的内存空间中并返回该空间的指针。这个函数会自动为新的字符串分配内存空间,因此使用完后需要手动释放该内存空间。 例如:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main() {
char str[] = "This is a string.";
char* new_str = strdup(str); // 复制字符串
printf("Original string: %s\n", str);
printf("New string: %s\n", new_str);
free(new_str); // 释放内存空间
return 0;
}
```
输出结果为:
```
Original string: This is a string.
New string: This is a string.
```
相关问题
strdup函数的用法
strdup函数是一个C标准库函数,其原型为:
```c
char *strdup(const char *s);
```
该函数会在堆上动态分配一个和s字符串相同的内存空间,并将s字符串的内容复制到该空间中。返回值是一个指向新字符串的指针,如果内存分配失败则返回NULL。
下面是一个使用strdup函数的例子:
```c
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main() {
char str[] = "hello world";
char *str_copy = strdup(str);
printf("original string: %s\n", str);
printf("duplicated string: %s\n", str_copy);
free(str_copy); // 释放内存
return 0;
}
```
输出:
```
original string: hello world
duplicated string: hello world
```
需要注意的是,由于strdup函数会在堆上动态分配内存,因此在使用完后需要手动释放该空间,避免内存泄漏。在上面的例子中,我们使用了free函数来释放str_copy指向的内存空间。
给一个使用strdup的实例
下面是一个使用 strdup() 函数的简单示例:
```c
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main() {
char *str1 = "Hello World!"; // 原始字符串
char *str2 = strdup(str1); // 复制字符串
printf("str1: %s\n", str1);
printf("str2: %s\n", str2);
free(str2); // 释放内存
return 0;
}
```
此程序将输出:
```
str1: Hello World!
str2: Hello World!
```
在这个例子中,我们声明了一个指向字符串 "Hello World!" 的指针 str1。然后,我们使用 strdup() 函数复制 str1 中的内容,并将返回的指针分配给指针 str2。最后,我们输出原始字符串和复制后的字符串。在程序的结尾,我们使用 free() 函数释放了 str2 指向的内存,以免发生内存泄漏。