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语言中的内存分配的主要内容,如果未能解决你的问题,请参考以下文章