内容简介:go的方法可以直接返回局部变量的指针,这主要依赖go是有runtime的语言,编译器在发现有变量可以逃逸出去的时候会在堆上分配变量而不是栈上,这样就可以返回该变量的指针了,且会使该地址的引用+1,当生命空间结束时,gc会去回收。作为对比,C语言就完全需要程序员自己去控制内存了,如果需要从函数内部返回指针,那么需要程序员自己malloc在堆上分配空间,并且需要在外部使用者用完之后即使的free掉。如果直接像go那样返回指针,要么编译不过,要么也是返回一个已经不该使用的栈内存地址,使用该地址会造成严重的错误。
go的方法可以直接返回局部变量的指针,这主要依赖 go 是有runtime的语言,编译器在发现有变量可以逃逸出去的时候会在堆上分配变量而不是栈上,这样就可以返回该变量的指针了,且会使该地址的引用+1,当生命空间结束时,gc会去回收。
package main import "fmt" func test() *int { var inner int = 100 return &inner } func main() { outer := test() fmt.Println(outer) }
作为对比,C语言就完全需要 程序员 自己去控制内存了,如果需要从函数内部返回指针,那么需要程序员自己malloc在堆上分配空间,并且需要在外部使用者用完之后即使的free掉。如果直接像go那样返回指针,要么编译不过,要么也是返回一个已经不该使用的栈内存地址,使用该地址会造成严重的错误。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- golang中值类型/指针类型的变量区别总结
- golang的相关问题(返回局部变量指针、分配原语、init、值与引用、接口、内建函数等等)
- NULL 指针、零指针、野指针
- 将数组和矩阵传递给函数,作为C中指针的指针和指针
- C语言指针数组和数组指针
- python(函数指针和类函数指针)
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
互联网思维的企业
[美] Dave Gray Thomas Vander Wal / 张 玳 / 人民邮电出版社 / 2014-4-25 / 59.00元
本书指导企业跳出仅更新自家产品和服务的怪圈,在管理方式、组织结构和公司文化方面进行变革,建立具有互联网思维的企业。书中通过大量图示和示例阐述了互联式公司必需的基础元素(透明的互动和交流平台,推崇自治和应变的组织结构,实验和学习的企业文化),以及一套鼓励员工创新的新式管理和奖励体系。最后,讨论板可方便你在工作时间和同事探讨如何增加公司的互联程度。一起来看看 《互联网思维的企业》 这本书的介绍吧!