静态变量存储方式

1、《程序员面试宝典》P56的一道题:请问打印出的结果是多少?

#include <iostream>
#include <iomanip>
using namespace std;
class A1
{
public:
    int a;
    static int b;
    A1();
    ~A1();
};
int main()
{ 
    cout<<sizeof(A1)<<endl;
    system("PAUSE");
    return 0;
}

打印出的结果是4,因为静态变量static是存放在全局数据区的,而sizeof是计算桟中分配的大小,不把static int b计算在内,所以 sizeof(A1)是4.

2、更深层次的解释:

顺便说说存储,可分为三类:静态存储(static storage);自动存储(automatic storage);动态分配存储(allocated or dynamic storage)。
对于自动存储则对应的是栈(stack)动态分配存储对应的是堆(heap)静态存储可分为.bss/.data/.rodata等数据段(section)
原文地址:https://www.cnblogs.com/xiaobailongvictory/p/4648544.html