为什么将变量`i`初始化为0和大尺寸会导致程序的大小相同?

Mit*_*erV 5 c variables size

有一个问题让我很困惑.

int main(int argc, char *argv[])
{
    int i = 12345678;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)
int main(int argc, char *argv[])
{
    int i = 0;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

尺寸

程序总共具有相同的字节.为什么?

那个字面值确实存储在哪里?文字段或其他地方?

记忆图

cad*_*luk 7

这些程序总共有相同的字节.为什么?

有两种可能性:

  1. 编译器正在优化变量.它没有在任何地方使用,因此没有意义.

  2. 如果1.不适用,程序大小无论如何都是相同的.他们为什么不应该?0和...一样大12345678.两个类型的变量T在内存中占用相同的大小.

那个字面值确实存储在哪里?

在堆栈上.局部变量通常存储在堆栈中.


mac*_*e_1 5

考虑一下你的卧室.如果你把它装满了东西,或者你把它留空了,这会改变你卧室的面积吗?int的大小是sizeof(int).it与你存储的值无关.