在下面的代码中,在打印变量的大小时,在我的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;
}
答案 0 :(得分:0)
程序通常具有4个内存部分,即
1.代码:这是程序可执行指令的存储位置。
2.数据:包含由程序员初始化的全局变量和静态变量。
3.堆栈:这是所有函数的所有局部变量及其声明,初始化和更改(如果有)的地方。它适用于FILO或LIFO。
4.堆:这是进行动态内存分配的地方。在c中,可以使用 malloc 将堆上的内存分配给指针,而在c ++中,可以使用 new 。
在您的情况下,由于A只是main函数的局部变量,因此应将其存储在堆栈中。