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执行期间加上复制指令吗?
语言标准对此没有任何说明.
但是,编译器可能会将您的代码转换为:
void f(int *a) {
*a = 30;
}
Run Code Online (Sandbox Code Playgroud)
因此根本不分配任何内存(显然除了指令空间).