未初始化的变量整数'A'在哪个存储区中占用内存?

时间:2019-04-06 18:49:59

标签: c++ linux x86-64 memory-layout

在下面的代码中,在打印变量的大小时,在我的64位Linux系统上使用GCC编译器显示为4个字节。因此,似乎为该未声明的整数分配了内存。未初始化的变量整数'A'在哪个存储区中占用内存?是未初始化的BSS段,还是局部变量的堆栈?尽管尚未初始化,但默认值为零,大小为4个字节,因此我一直认为它会在堆栈上分配内存。

#include<iostream>
#include<iomanip>

using namespace std;

int main(void)
{ 
    int A;

    cout << A << endl << sizeof(A);

    return 0;
}

1 个答案:

答案 0 :(得分:0)

程序通常具有4个内存部分,即
1.代码:这是程序可执行指令的存储位置。
2.数据:包含由程序员初始化的全局变量和静态变量。
3.堆栈:这是所有函数的所有局部变量及其声明,初始化和更改(如果有)的地方。它适用于FILO或LIFO。
4.堆:这是进行动态内存分配的地方。在c中,可以使用 malloc 将堆上的内存分配给指针,而在c ++中,可以使用 new

在您的情况下,由于A只是main函数的局部变量,因此应将其存储在堆栈中。