GO语言内存分配机制
Go具有两种分配内存的机制,分别是使用内置函数new()和make().
1、new函数
new()函数可以给一个值类型的数据分配内存,调用成功后返回一个初始化块指针,new()函数的内存块指针,new()函数原型定义如下:
func new(Type) * Type
在调用new()函数时要注意,参数Type是一个类型而不是具体的数值,函数调用成功后返回该类型的内存指针,同事给类型初始化为“0”值。
2、make函数
make()函数用于给引用类型分配内存空间,比如像Slice,Map,Channel等。make()函数创建的是一个引用类型对象,而不是一个内存空间的指针。make()函数的原型定义如下:
func make(Type, size InterType) Type
【GO语言内存分配机制】make(T,args)函数的目的与new(T)不同。它仅用于创建Slice、Map和Channel,并返回类型T(不是*T)的一个被初始化了的(不是零)实例。之中差别的出现是由于这三种类型实质上是对在使用前必须进行初始化的数据结构的音译。
推荐阅读
- JAVA(抽象类与接口的区别&重载与重写&内存泄漏)
- 【生信技能树】R语言练习题|【生信技能树】R语言练习题 - 中级
- 一起来学习C语言的字符串转换函数
- C语言字符函数中的isalnum()和iscntrl()你都知道吗
- C语言浮点函数中的modf和fmod详解
- C语言中的时间函数clock()和time()你都了解吗
- C语言学习|第十一届蓝桥杯省赛 大学B组 C/C++ 第一场
- C语言解方程的根和判断是否是闰年
- C语言的版本比较
- Java内存泄漏分析系列之二(jstack生成的Thread|Java内存泄漏分析系列之二:jstack生成的Thread Dump日志结构解析)