現在很多編譯器都支持在函數內塊內定義聲明變量,顯然它的作用域只是侷限於塊內,那麼它在內存中是否也是只是在塊內存在實體呢?
爲此我們寫個例子來看一下彙編:
int main()
{
for (int i = 0; i < 200; i++)
{
if (1)
{
int a = 100;
printf("%d\r\n", a--);
}
}
return 0;
}
可以看到在if塊結束後每次都會將堆棧釋放。