【发布时间】:2021-03-27 16:05:27
【问题描述】:
static void g(int v, int w) {
int x, y, z;
x= n * v;
}
函数 g() 的栈帧是多少字节?
【问题讨论】:
-
这取决于编译器。可以是as low as zero。
-
可能为零,也可能是兆字节。由于“好像”规则,该功能可能已经被优化而不再存在,该规则允许实现做任何他们喜欢的事情,前提是根据标准,可观察的行为是相同的。事实上,ISO C 标准恰好 零 次提到“堆栈”这个词,因此堆栈甚至可能不存在。
-
假设所有东西都使用了,会不会是 28?
-
Asznee,是的,它可以是 28。它也可以是任何其他非负整数 :-)
-
@paxdiablo 谁说返回地址在栈上? :-) gcc.godbolt.org/z/orobW3