free的空间复杂度(malloc(m))

时间:2016-03-02 13:13:38

标签: c malloc free space-complexity

我试图找到以下代码的空间复杂性:

void f(int arr[], int n){
    int m=0; 
    for(int i=1; i<n*n; ++i)
        for(int k=0; k<n*n; k+=i){
            m=(m>k)?m:k; 
            printf("1");
        }
    free(malloc(m)); 
}

答案是n ^ 2,但我不太清楚内存分配在这里是如何工作的。我的意思是,为什么我们把malloc放在免费的里面?并不意味着我们根本不会分配任何内存(因为我们马上将其释放?或者它仍然可以计算?)。

谢谢!

1 个答案:

答案 0 :(得分:0)

两个循环的组合效果似乎是将m设置为n*n-1然后malloc分配该字节数并释放它。因此空间复杂度为O(n ^ 2)。