今天看啥  ›  专栏  ›  菜刚

细谈Go变量的内存分布

菜刚  · CSDN  ·  · 2020-01-01 00:00

我们程序中的变量大多被分配在内存的两个区域: statck heap

stack heap

首先让我们一起来回顾一下进程的内存分配:
我们写的程序代码跑起来后,会是一个进程;OS会给我们的进程分配内存;内存结构大致如下:
在这里插入图片描述

OS给一个进程分配的内存空间大致可以分为: 代码区 全局数据区 栈(stack) 堆(heap) 环境变量区域 以及中间空白的 缓冲区 六个部分。其中,数据的增长路径除 栈(stack) 是由高到低之外,其余的均是由低到高(可看图中数据箭头)。

我们思考一下,为什么 栈(stack)区 这么特殊和其他区域路径相反?还有,进程内存中 stack heap 和数据结构中的 stack heap 名字都相同,是有什么联系吗?请带着问题往下看:

进程内存中的 stack




原文地址:访问原文地址
快照地址: 访问文章快照