5.2 Go语言中的内存分配

Posted 孙琦Ray

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了5.2 Go语言中的内存分配相关的知识,希望对你有一定的参考价值。

Go语言中有自动垃圾回收的机制(garbage collection),不需要为内存回收担心。而内存分配的有两种操作方式,new和make,本节重点讲述这两种操作方式。

new

内置函数new与其他语言类似,new(T)为T类型分配一个零空间,并返回其地址,即*T类型的值。或者换句话说,它返回一个指向新分配的T类型零值的指针,这一点需要牢记。

bytes.Buffer 的文档指出“Buffer 的零值是一个可以使用的空缓冲区”。 同样,sync.Mutex没有显式构造函数或Init方法。 相反,sync.Mutex 的零值被定义为未锁定的互斥锁。

参数定义

func new(Type) *Type

The new built-in function allocates memory. The first argument is a type, not a value, and the value returned is a pointer to a newly allocated zero value of that type.

make

内置的make(T)仅用于创建slices, maps和channels,返回类型T的初始化值(非零!),并且不是一个指针*T。产生这种区别的原因,是在使用前引用的数据类型必须进行初始化。

参数定义

func make(t Type, size …IntegerType) Type

The make built-in function allocates and initializes an object of type slic

以上是关于5.2 Go语言中的内存分配的主要内容,如果未能解决你的问题,请参考以下文章

Go 语言基础 之 进阶

Go 语言内存分配学习笔记

Go 语言内存分配学习笔记

Go 语言内存分配学习笔记

Go语言中new和make你使用哪个来分配内存?

go语言学习笔记 — 基础 — go工具(5.2): 基准测试 (性能测试)—— 获得代码内存占用和运行效率的性能数据