如何为在void函数内使用的字符串释放malloc?

问题描述 投票:1回答:1

我不知道如何解决这个问题。我必须在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中免费使用。有人可以帮我吗?

malloc free void
1个回答
0
投票

您正在覆盖指针,而不是写入内存。然后,您释放一个静态字符串。您可以复制字符串以将其移动到该内存中:

#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;
}
© www.soinside.com 2019 - 2024. All rights reserved.