在哪个内存部分,未初始化的变量整数'A'占用内存?

问题描述 投票:-1回答:1

在下面的代码中,在打印变量的大小时,它在我的64位Linux系统上使用GCC编译器说4个字节。所以,内存似乎被分配给这个未声明的整数。在哪个内存部分,未初始化的变量整数'A'占用内存?它是BSS segement,因为它是未初始化或堆栈,因为它是一个局部变量?虽然它是未初始化的,它的默认值为零,大小为4个字节,所以我认为它会在堆栈上获得内存分配。

#include<iostream>
#include<iomanip>

using namespace std;

int main(void)
{ 
    int A;

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

    return 0;
}
c++ linux x86-64 memory-layout
1个回答
0
投票

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

在您的情况下,因为A只是main函数的局部变量,所以它应该存储在堆栈中。

© www.soinside.com 2019 - 2024. All rights reserved.