Go语言内存分配机制

时间:2022-10-25 04:05:34

前言: 本文是学习<<go语言程序设计>> -- 清华大学出版社(王鹏 编著) 的2014年1月第一版 做的一些笔记 , 如有侵权, 请告知笔者, 将在24小时内删除, 转载请注明出处!

Go语言有两种内存分配机制 , 分别是内置函数 new() 和make().

  - new()

    - 定义: func new(Type) * Type

    - 返回值是一个内存块指针

    - new() 是一个内置函数, 不同于其他语言中的new操作符, 它只将内存清零, 而不是初始化内存.

  - make()

    - 定义: func make(Type, size IntegerType) Type

    - 在调用make() 函数时, Type必须是引用类型 (Slice , Map 或 Channel), IntegerType指定要创建的对象的个数.

    - make() 返回值是一个对象, 而不是new返回的一个内存空间指针.

  - make 和 new 对比

var p * []int = new([]int)
var v []int = make([]int,10)