如何为 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;
}