C 语言内存四区原理 ( 内存四区建立流程 )
Posted 韩曙亮
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C 语言内存四区原理 ( 内存四区建立流程 )相关的知识,希望对你有一定的参考价值。
文章目录
一、内存四区建立流程
内存四区 建立流程 :
1. 加载代码到内存 : 操作系统 中 执行 可执行程序 , 将 存放在硬盘中的 可执行程序 ( 包含代码 ) 加载到内存中 , 这里的代码指的是 ELF 文件中汇编代码对应的机器码 ;
2. 将 C 代码在内存中分区 : 操作系统 将 C 代码 分为 4 4 4 个区 , 由上到下 : 堆区 , 栈区 , 全局区 , 代码区 ;
- 堆区 : 开发者负责分配释放内存 , 调用 malloc / new 函数分配内存 , 调用 free / delete 函数释放内存 , 如果程序结束还没有释放内存 , 则 由操作系统回收内存 ;
- 栈区 : 由 编译器 自动 分配 与 释放 , 存放函数 参数 , 局部变量值 ;
- 全局区 :
- 静态区 : 存放 全局变量 , 静态变量 ; 初始化的 全局变量 和 静态变量 放在一块区域 , 未初始化的 全局变量 和 静态变量 放在另外一块区域 ; 程序执行结束后由操作系统释放 ;
- 常量区 : 存放 字符串常量 和 其它常量 , 程序结束后由 操作系统释放 ;
- 代码区 : 存放 函数的 二进制代码 ;
3. 执行主函数 : 找到 main()
函数 , 并执行 ;
以上是关于C 语言内存四区原理 ( 内存四区建立流程 )的主要内容,如果未能解决你的问题,请参考以下文章
C 语言内存四区原理 ( 栈内存与堆内存对比示例 | 函数返回的堆内存指针 | 函数返回的栈内存指针 )