4种内存区域:(1) 代码段
(2) 全局(静态)变量区
(3) 栈
(4) 堆
变量的比较
变量名 | 生命周期 | 作用域 | 默认值 | 内存区域 | 链接属性 |
普通全局变量 | 程序运行时创建,程序退出时销毁 | 从定义变量开始到本文件的结尾都能使用 | 0 | 全局(静态)变量区 | 其他文件可用 |
静态全局变量 | 程序运行时创建,程序退出时销毁 | 从定义变量开始到本文件的结尾都能使用 | 0 | 全局(静态)变量区 | 只能在本文件内使用 |
普通局部变量 | 进入函数时创建,函数退出时销毁 | 本函数内部有效 | 随机值 | 栈 | 无 |
静态局部变量 | 第1次执行该语句时创建,程序结束时销毁 | / | 0 | 全局(静态)变量区 | 无 |
动态内存 | Malloc开始,free结束 | / | 随机值 | 堆 | / |
函数 | 无 | 无 | 无 | 代码段 | / |