注册 登录
编程论坛 C语言论坛

请问什么时候需要free,这个函数里应该怎么做?

星系隐 发布于 2020-11-28 20:31, 1366 次点击
#include <stdio.h>
char *erjinzhi(char *zhizhen1, int s1);
int main(void)
{
    char *a3;
    printf("%s", erjinzhi(a3, 22));
    return 0;
}
char *erjinzhi(char *zhizhen1, int s1)
{
    zhizhen1 = malloc(sizeof(char) * 9);
    int i1 = 0, i2 = s1, i3 = 0;
    for (i1 = 0; i1 < 8; i1++)
    {
        zhizhen1[i1] = '0';
    }
    for (i3 = 8; i2 != 0; i2 = i2 / 2, i3 = i3 - 1)
    {
        if (i2 % 2 == 0)
        {
            zhizhen1[i3] = '0';
        }
        else
        {
            zhizhen1[i3] = '1';
        }
    }
    return zhizhen1;
}
这个转二进制函数里malloc了内存,应该什么时候free?在哪里free?
2 回复
#2
apull2020-11-29 10:56
后面在不需要该变量的时候free
*zhizhen1 = *a3
所以printf后free(a3);

malloc和free需要#include <stdlib.h>
#3
星系隐2020-11-29 22:13
回复 2楼 apull
嗯,谢谢,我明白了,不过环境是力扣做题环境和力扣的playground,各种库都给导入好了,所以这么写没问题
1