使用malloc函数的空间复杂性

时间:2017-01-25 15:14:03

标签: c malloc

这是一个功能,我想了解它的空间复杂性:

void func_test(int n)
{
    int *p;
    for (int i=0; i<=n; i++)
    {
        p=malloc(sizeof(int)*i);
        for (int j=0; j<i; j++) *(p+j)=j; //just to insert some numbers to p
        free(p);
    }
    return;
}

我知道我总共分配了sizeof(int)* n ^ 2个字节,但是在我分配了一个内存之前我没有&#34; free&#34;它。 那么,空间复杂度是O(n ^ 2)还是O(1)?

谢谢,Tamir。

1 个答案:

答案 0 :(得分:3)

它是O(n)。您永远不会分配超过保留n ints所需的空间。原因正是因为你所说的。您可以在每次迭代中释放内存。记忆与时间不同,可以回收利用。