简单的c malloc

nun*_*nos 1 c malloc

这不起作用:

void function(char* var)
{
    var = (char*) malloc (100);
}

int main()
{
    char* str;
    function(str);
    strcpy(str, "some random string");
    printf("%s\n", str);

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

这样做:

void function(char* var)
{
    //var = (char*) malloc (100);
}

int main()
{
    char* str;
    //function(str);
    str = (char*) malloc (100);
    strcpy(str, "some random string");
    printf("%s\n", str);

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

为什么?

Ara*_*raK 14

您必须传递指针的地址以在函数分配您想要的地址,否则您只是传递它的副本:

void function(char** var)
{
    *var = malloc (100);
}

int main()
{
    char* str;
    function(&str);
    strcpy(str, "some random string");
    printf("%s\n", str);

    return 0;
}
Run Code Online (Sandbox Code Playgroud)