一.内存的分区模型
4个区域:不同区域的数据,有不同的生命周期,灵活编程
1.代码区 :存放二进制代码(程序运行前)
2.全局区:全局变量、静态变量、常量、在程序结束后,由操作系统释放。
3.栈区:由编译器自动编译和释放,存放局部变量和函数中的参数
4.堆区:程序员分配和释放
1.1程序运行前
程序编译后,生成exe可执行程序,未执行前分为两个区域:
代码区:共享的(对于频繁执行的代码)、只读(不允许改变)的
存放CPU执行的机器指令。
1.2.局部、全局、常量在内存条中存放的位置
局部变量和全局变量在内存条中存放的区域是不一样的。
常量:1. 字符串常量:双引号引起来的
2.const修饰的变量 :1)const修饰的全局
2) const修饰的局部变量
静态变量:static int a = 10; 也会放在全局区中。
常量、静态和全局变量存放的区域是离得很近的。
局部变量,包括const修饰的局部变量,和上面的那些里的都特别远。
1.3 变量
存在的意义:方便管理内存空间。
内存的地址编号(16进制,代表一个内存)
内存太多记不住:起一个名字a,即可代表这段地址。
1.4 常量
记录程序中不可更改的数据。
方式:
1. #define 常量名 常量值 (宏)
2. const 数据类型 常量名 = 常量值 (const)