gpt4 book ai didi

c - 堆栈上分配了多少空间

转载 作者:行者123 更新时间:2023-11-30 19:33:57 27 4
gpt4 key购买 nike

我正在解决一道测试题,但不确定答案是否正确。问题是:如果我在 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 之一。有人可以帮我解决我做错的地方吗?预先感谢您。

最佳答案

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

在其最终深度,main 被调用,hook 被调用。所以此时 BC 都在堆栈上。

总共 5000000 字节 = 4.76837158203125 MB。

关于c - 堆栈上分配了多少空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44603100/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com