细谈Go变量的内存分布

本文深入探讨Go语言中变量的内存分布,涵盖栈、堆的概念及其在进程内存中的作用。文章分析了数据结构中的栈和堆,解释了内存中的"栈"和数据结构中的"栈"的区别。此外,讨论了Go变量的位置决定因素,如逃逸分析,以及如何通过逃逸分析工具理解变量的存储位置。
摘要由CSDN通过智能技术生成

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

stackheap

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

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

我们思考一下,为什么栈(stack)区这么特殊和其他区域路径相反?还有,进程内存中stackheap和数据结构中的stackheap名字都相同,是有什么联系吗&#

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

菜刚

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值