指针的定义
指针是一个代表着某个内存地址的值。这个内存地址往往是在内存中存储的另一个变量的值的起始位置。
go指针是提供操作数据的基本桥梁。因为go很多调用,往往复制一份对象,例如函数的参数,如果没有指针,有些情况不得不存在很多副本。
Go语言保留了指针,但与C语言指针有所不同。主要体现在:
默认值 nil
操作符 "&" 取变量地址,"*"通过指针访问目标对象
不支持指针运算,不支持 "->" 运算符,直接⽤"."访问目标成员
概念: linux 程序内存管理
data section (.data)*: 用来存放已经被初始化为非零的全局变量。
bss section (.bbs):用来存放 没有被初始化 和 已经被初始化为0 的全局变量。
rodata section(.rodata): 用来存放常量数据。 ro: read only
text section(.text):存放代码(如:函数)和部分整数常量(应该指的是一些立即数),这个段是可执行的。
heap (堆):动态分配内存,由程序自身决定开辟和释放。
stack(栈): 存放函数的局部变量和函数参数
栈帧:用来给函数运行提供内存空间,取内存于stack上,当函数调用的时候,产生栈帧.函数调用结束的时候,释放栈帧。栈帧存储: 1.局部变量.