page contents

golang 中 make 和 new 的区别?

轩辕小不懂 发布于 2022-08-09 14:07
阅读 923
收藏 0
分类:Golang
4044
Nen
Nen
- 程序员

共同点:给变量分配内存

不同点:

作用变量类型不同,new给string,int和数组分配内存,make给切片,map,channel分配内存;

返回类型不一样,new返回指向变量的指针,make返回变量本身;

new 分配的空间被清零。make 分配空间后,会进行初始化;

字节的面试官还说了另外一个区别,就是分配的位置,在堆上还是在栈上?这块我比较模糊,大家可以自己探究下,我搜索出来的答案是golang会弱化分配的位置的概念,因为编译的时候会自动内存逃逸处理,懂的大佬帮忙补充下:make、new内存分配是在堆上还是在栈上?

请先 登录 后评论