1.静态全局变量、普通全局变量、静态局部变量都保存在全局(静态)变量区(数据段),默认值都是0
全局变量:在函数外部定义的变量,尽量少用,不安全
局部变量:在函数内部定义的变量
静态变量:用static修饰,主要和const区分开
全局变量分为普通全局变量和静态全局变量
2.内存分为:代码段、全局(静态)变量区(数据段)、栈、堆
代码段:存放静态函数和普通函数,存放程序,函数文本
全局(静态)变量区(数据段):在这个区域的变量默认值都为0
栈:比较小,大概为1M左右,不用管变量的回收,这个区域的默认值都是随机值
堆:很大,Windows大约是2G,Linux大约是3G,申请后使用完需要释放,生命周期长
3.(面试)在main执行之前能不能执行其他函数,在main执行之后能不能执行其他函数呢?
答案:都是可以的,在C++中,可以在main函数前定义一个类,然后定义一个全局变量,全局变量在构造的时候,会自动调用构造函数,当全局变量生命周期结束时,会自动调用析构函数,所以在main执行之前是可以执行其他函数的,在main执行之后也是可以执行其他函数的
class A//类
{
A()//构造函数
{
printf("你好\n");
}
~A()//析构函数
{
printf("再见\n");
}