Golang的特别之处二

变量的生命周期和垃圾回收机制

可知有种局部变量的生存空间可变长?
 当局部变量给生命周期的较长的变量赋值时,局部变量的生命周期变长。
var global *int 
func f(){
	var x int 
	x = 1 
	global = &x
}
//此时x从函数f中逃逸,生命周期会变长
可知变量的堆栈分配?
 变量使用堆或者栈,不是取决于new或var关键字来声明。
var global *int 
func f(){
	var x int 
	x = 1 
	global = &x
}
//x使用堆空间
func g(){
	y:=new(int)
	*y = 1
}
//y使用栈空间
可知go如何回收垃圾?
 go回收垃圾时,会以该回收对象为路径追溯的源头,通过指针或其他方式的引用来判断是否可以找到该对象,若可以,对象可以被访问,否则不可以被访问;可以访问的对象不被回收,不可以访问的就被回收了。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值