C 语言内存四区原理 ( 内存四区建立流程 )

Posted 韩曙亮

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C 语言内存四区原理 ( 内存四区建立流程 )相关的知识,希望对你有一定的参考价值。





一、内存四区建立流程



内存四区 建立流程 :

1. 加载代码到内存 : 操作系统 中 执行 可执行程序 , 将 存放在硬盘中的 可执行程序 ( 包含代码 ) 加载到内存中 , 这里的代码指的是 ELF 文件中汇编代码对应的机器码 ;

2. 将 C 代码在内存中分区 : 操作系统 将 C 代码 分为 4 4 4 个区 , 由上到下 : 堆区 , 栈区 , 全局区 , 代码区 ;

  • 堆区 : 开发者负责分配释放内存 , 调用 malloc / new 函数分配内存 , 调用 free / delete 函数释放内存 , 如果程序结束还没有释放内存 , 则 由操作系统回收内存 ;
  • 栈区 :编译器 自动 分配 与 释放 , 存放函数 参数 , 局部变量值 ;
  • 全局区 :
    • 静态区 : 存放 全局变量 , 静态变量 ; 初始化的 全局变量 和 静态变量 放在一块区域 , 未初始化的 全局变量 和 静态变量 放在另外一块区域 ; 程序执行结束后由操作系统释放 ;
    • 常量区 : 存放 字符串常量 和 其它常量 , 程序结束后由 操作系统释放 ;
  • 代码区 : 存放 函数的 二进制代码 ;

3. 执行主函数 : 找到 main() 函数 , 并执行 ;

以上是关于C 语言内存四区原理 ( 内存四区建立流程 )的主要内容,如果未能解决你的问题,请参考以下文章

C语言内存四区

C 语言内存四区原理 ( 栈内存与堆内存对比示例 | 函数返回的堆内存指针 | 函数返回的栈内存指针 )

C语言:内存四区

C 语言内存四区原理 ( 常量区示例 | 不同函数返回的相同字符串的指针地址相同 )

C语言之内存四区

零基础学C语言知识总结十一:C语言的内存四区