C语言块内定义的变量的生存周期

现在很多编译器都支持在函数内块内定义声明变量,显然它的作用域只是局限于块内,那么它在内存中是否也是只是在块内存在实体呢?

为此我们写个例子来看一下汇编:

int    main()
{

    for (int i = 0; i < 200; i++)
    {
        if (1)
        {
            int a = 100;
            printf("%d\r\n", a--);
        }
    }
    return 0;
}

C语言块内定义的变量的生存周期

可以看到在if块结束后每次都会将堆栈释放。