存储区域
内存存储区域主要分为一下几块区域:
├———————┤低端内存区域
│ …… │堆栈区域
├———————┤
│ 动态数据区 (自由存储区)│
├———————┤
│ …… │
├———————┤
│ 代码区 │
├———————┤
│ 静态数据区 │
├———————┤
│ …… │
├———————┤高端内存区域
1. *栈区域*
:由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。
2. *堆区域*
:由new分配的内存块,他们的释放编译器不去管,由我们的应用程序去控制,一般一个new就要对应一个delete。如果程序员没有释放掉,那么在程序结束后,操作系统会自动回收。在堆中存放空闲内存地址链表,申请的时候是去遍历链表获取地址的,所以地址与地址之间可能不连续.
3. *自由(动态)存储区*
:由malloc等分配的内存块,他和堆是十分相似的,不过它是用free来结束自己的生命的。
4. *静态(全局)存储区*
:全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域, 未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。 程序结束后由系统释放。
5. *常量存储区*
:这是一块比较特殊的存储区,他们里面存放的是常量,不允许修改.
6. *程序代码区*
:存放函数体中的二进制代码
端模式
端模式:字节在内存中分布的顺序,分为大端字节序和小端字节序
小端字节序:低字节存放