静态变量存储方式
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)。