我有一个简单的问题,因为我无法找到从函数返回字符串并将其放入另一个字符串的方法。我在C中的代码是:
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
char *func();
int main()
{
char *temp = malloc(sizeof(char) * 25);
temp = func();
printf("String received: %s\n", temp);
return 0;
}
char *func()
{
char str[25];
strcpy(str, "HEY THERE!");
printf("String sent: %s\n", str);
return str;
}
我得到了这个结果: 发送的字符串:嘿嘿! 收到的字符串:
知道怎么做得好吗?感谢
答案 0 :(得分:2)
动态内存,是的,但它在错误的地方使用。再想一想这段代码:
char *temp = malloc(sizeof(char) * 25);
temp = func();
您正在做的是为temp
分配一些内存,然后为其分配另一个值:func()
的返回值,即内存泄漏。
正确的方法是在func()
中分配内存,并将指针返回到已分配的内存。如果没有使用它,请记得释放它。