回答

收藏

返回指向本地结构的指针

技术问答 技术问答 221 人阅读 | 0 人回复 | 2023-09-12

我看到了一些具有以下结构的代码示例:
& k# M* d/ Z: E6 n
    type point struct {  x,y int}func newPoint() *point {  return &point{10,20}
    " {5 x3 P' H' z# U# L
我有 C   背景,这对我来说似乎是错误的。这种结构的语义是什么?新点是分布在栈还是堆上?
1 ]2 L! u+ b/ J& K4 z                                                                / A9 i/ @5 z5 w4 e
    解决方案:                                                                ! H- t* ]7 [. t, U$ d* C
                                                                Go 执行指针逃逸分析。如果指针转换为本地堆栈,在这种情况下,它将在堆栈上分配对象。如果它不转换本地函数,编译器可以在堆栈上自由分配(尽管它没有任何保证;这取决于指针转换分析是否能证明指针保持在函数的本地)。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则