【发布时间】:2020-03-27 13:46:51
【问题描述】:
我对这个功能感到困惑。
int i;
for(i = 1; i<10; i++){
int arr[i];
printf("%d\n",sizeof(arr));
}
return 0;
空间如何在有界(由 ESP)堆栈内存中增长? 有没有一种编译技巧?
编辑解释: 堆栈不应该是这样的吗?
0 ---> val of i uninitialized
-4 ---> arr[0] uninitialized
在第一个循环之后
0 ---> val of i uninitialized
-4 ---> arr[1] uninitialized
-8 ---> arr[0] uninitialized
我很想说:ESP 是否在循环的每次迭代下方移动?
【问题讨论】:
-
什么是“ESP”?您是在谈论特定架构吗?有些架构没有“堆栈指针”。并且堆栈可以在不同的架构上向上或向下(或者,在任何地方)增长。 编译器实现它的方式取决于它。
-
栈指针,栈底地址。特定于具有堆栈指针的架构级别
标签: c arrays stack static-allocation