在函数范围内的const静态变量的情况下的内存分配

Spi*_*dey 3 c memory static memory-management

在C中,a static const int和a const int在内存方面有什么区别?

void f(int *a)
{
    static const int b = 10;
    const int c = 20;

    *a = b + c;
}
Run Code Online (Sandbox Code Playgroud)

b只消耗sizeof(int)?并且c,它会消耗sizeof(int)20值,并且sizeof(int)f执行期间加上复制指令吗?

Oli*_*rth 5

语言标准对此没有任何说明.

但是,编译器可能会将您的代码转换为:

void f(int *a) {
    *a = 30;
}
Run Code Online (Sandbox Code Playgroud)

因此根本不分配任何内存(显然除了指令空间).