堆栈上分配了多少空间

时间:2017-06-17 09:46:09

标签: c

我正在解决一个测试问题,我不确定答案是否正确。问题是:如果我在32位操作系统下运行代码,当我们从函数hook()中的函数malloc()返回时,将在堆栈上分配多少空间。还假设已分配所有必需的内存。

Here is code

…char A[1000000]…

int hook() {char C[2000000]; …
    ptr_char2 = (char) malloc (5000000)); /*Hi guys, how much memory do I have now?*/……
}

int main() {
    char B[3000000];……
    ptr_char = (char*) malloc (4000000));
    hook();…
} 

我知道堆栈上存储了静态分配的变量。动态分配在堆上。我试图计算char A(0.9MB)+ char B(1.9)+ char C(2.8),它需要大约5.6MB。但正确的答案是以下1MB,5MB或9MB之一。有人可以在我犯错的地方帮助我吗?提前谢谢。

1 个答案:

答案 0 :(得分:0)

A是静态的,因此不在堆栈中。

在其ultimo深度,调用main并调用hook。因此,此时BC都在堆栈中。

总共5000000字节= 4.76837158203125 MB。