golang 变量逃逸分析

package main

import "fmt"

//本函数测试入口参数和返回值情况
func dummy(b int) int {
   var c int
   c = b
   return c
}

//空函数什么都不做
func void() {

}

// 声明空结构体测试结构体逃逸情况
type Data struct {
}

func dummy1() *Data {
   var c Data
   return &c
}
func main() {
   //变量逃逸(Escape Analysis)——自动决定变量分配方式,提高运行效率
   //堆和栈各有优缺点,该怎么在编程中处理这个问题呢?在 C/C++ 语言中,
   // 需要开发者自己学习如何进行内存分配,选用怎样的内存分配方式来适应不同的算法需求。
   // 比如,函数局部变量尽量使用栈,全局变量、结构体成员使用堆分配等。
   // 程序员不得不花费很长的时间在不同的项目中学习、记忆这些概念并加以实践和使用。
   //
   //Go语言将这个过程整合到了编译器中,命名为“变量逃逸分析”。通过编译器分析代码的特征和代码的生命周期,决定应该使用堆还是栈来进行内存分配。
   //声明变量 并打印
   var a int
   void()
   fmt.Println(a, dummy(0))

   fmt.Println(dummy1())
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Json____

您的鼓励是我创作的动力~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值