【发布时间】:2014-06-12 14:55:28
【问题描述】:
我想知道运行下面的代码时运行时堆栈是如何处理的
int i;
for (i = 0; i < 100; i++) {
int v[i+1];
...
}
每次循环后堆栈都会减少和增长? 堆栈最初分配的数量适合 v[101] ? 它是否被编译器优化,所以它把 v 当作一个指针,只做堆分配?
谢谢。
【问题讨论】:
-
这在 C++ 中是不允许的,所以应该只标记 C。
-
@EOF
int v[i+1];是 VLA 声明。 -
@EOF 我不知道(可能只是为了这个问题)。但是您的评论对代码没有意义。
-
@EOF 这个问题对我来说很有意义,我不知道你的问题是什么,或者你为什么争论。
-
我只是想知道在这种情况下如何管理内存。我不知道它到底在做什么。例如。每个循环 v[0] 的地址是否相同?
标签: c memory-management stack