go语言内存存储模型(对于可执行程序)

go语言内存存储模型(对于可执行程序)_第1张图片

代码区

代码区接收计算机指令,只读共享无法操作

数据区

  1. 初始化数据区
  2. 未初始化数据区
  3. 常量区

堆区

堆区存放允许用户随意访问的东西,一般存储视频、图片、模型、文本等,字符串、切片、map、new函数等。

栈区

栈区存放函数信息和局部变量

储存原理:先进后入,后进先出。

注意

  1. 堆区的空间比栈区大得多
  2. 栈区一般存放已知大小的数据变量,而map切片等有需要append追加所以大小未定。
  3. 从低地址到高地址存储
  4. 数据区一般指全局变量
  5. 地址最低并不是代码区,0-255是系统占用。同样,最高并不是栈区,而是注册表
  6. 栈区从高地址向低地址存储
  7. 栈区存在gc垃圾回收机制,会自己进行维护

你可能感兴趣的:(Go)