回答

收藏

返回指向本地结构的指针

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

我看到了一些具有以下结构的代码示例:
* o. y, f' z" a. _; i
    type point struct {  x,y int}func newPoint() *point {  return &point{10,20}* f( `. t3 H$ c1 s) t$ D
我有 C   背景,这对我来说似乎是错误的。这种结构的语义是什么?新点是分布在栈还是堆上?$ ~( ]3 Y" e- ]" [. V* J3 d6 F0 D
                                                               
- }! T& a' U, v% f    解决方案:                                                                0 |6 q4 ]# j  D1 U* I2 o
                                                                Go 执行指针逃逸分析。如果指针转换为本地堆栈,在这种情况下,它将在堆栈上分配对象。如果它不转换本地函数,编译器可以在堆栈上自由分配(尽管它没有任何保证;这取决于指针转换分析是否能证明指针保持在函数的本地)。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则