golang方法返回局部变量指针

栏目: C · 发布时间: 6年前

内容简介: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那样返回指针,要么编译不过,要么也是返回一个已经不该使用的栈内存地址,使用该地址会造成严重的错误。


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

离散数学及其应用(原书第4版)

离散数学及其应用(原书第4版)

Kenneth H.Rosen / 机械工业出版社 / 2002-1-1 / 75.00

离散数学及其应用:原书第4版,ISBN:9787111075776,作者:(美)Kenneth H.Rosen著;袁崇义[等]译一起来看看 《离散数学及其应用(原书第4版)》 这本书的介绍吧!

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具