如何为 void 函数中使用的字符串释放 malloc?
How to free malloc for string used inside void function?
我不知道,如何解决这个问题。我必须在 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 中使用 free。有人可以帮助我吗?
你覆盖了指针,而不是写入内存。然后你释放了一个静态字符串。您可以复制字符串以将其移动到该内存中:
#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;
}
我不知道,如何解决这个问题。我必须在 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 中使用 free。有人可以帮助我吗?
你覆盖了指针,而不是写入内存。然后你释放了一个静态字符串。您可以复制字符串以将其移动到该内存中:
#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;
}