我不知道如何解决这个问题。我必须在void函数内使用malloc。在这种情况下如何使用免费?
#include <stdio.h>
#include <stdlib.h>
void function(char **string)
{
*string=malloc(16*sizeof(char));
*string="Hello World";
}
int main ()
{
char *string;
function(&string);
printf ("%s\n", string);
free(string); //not working
return 0;
}
我不能在函数内部使用malloc,因为我会丢失字符串。而且我不知道如何在main中免费使用。有人可以帮我吗?
您正在覆盖指针,而不是写入内存。然后,您释放一个静态字符串。您可以复制字符串以将其移动到该内存中:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void function(char **string)
{
*string=malloc(16*sizeof(char));
strcpy(*string, "Hello World");
}
int main ()
{
char *string;
function(&string);
printf ("%s\n", string);
free(string);
return 0;
}