订阅专栏
文章目录
一、内存四区建立流程
一、内存四区建立流程
内存四区 建立流程 :
1. 加载代码到内存 : 操作系统 中 执行 可执行程序 , 将 存放在硬盘中的 可执行程序 ( 包含代码 ) 加载到内存中 , 这里的代码指的是 ELF 文件中汇编代码对应的机器码 ;
2. 将 C 代码在内存中分区 : 操作系统 将 C 代码 分为 4 44 个区 , 由上到下 : 堆区 , 栈区 , 全局区 , 代码区 ;
堆区 : 开发者负责分配释放内存 , 调用 malloc / new 函数分配内存 , 调用 free / delete 函数释放内存 , 如果程序结束还没有释放内存 , 则 由操作系统回收内存 ;
栈区 : 由 编译器 自动 分配 与 释放 , 存放函数 参数 , 局部变量值 ;
全局区 :
静态区 : 存放 全局变量 , 静态变量 ; 初始化的 全局变量 和 静态变量 放在一块区域 , 未初始化的 全局变量 和 静态变量 放在另外一块区域 ; 程序执行结束后由操作系统释放 ;
常量区 : 存放 字符串常量 和 其它常量 , 程序结束后由 操作系统释放 ;
代码区 : 存放 函数的 二进制代码 ;
3. 执行主函数 : 找到 main() 函数 , 并执行 ;