一尘不染

返回指向本地结构的指针

javascript

我看到一些具有如下结构的代码示例:

type point struct {
  x, y int
}

func newPoint() *point {
  return &point{10, 20}
}

我有 C++ 背景,这对我来说似乎是错误的。这种构造的语义是什么?新点是在栈还是堆上分配的?


阅读 228

收藏
2021-12-08

共1个答案

一尘不染

Go 执行指针逃逸分析。如果指针转义本地堆栈,在这种情况下,它会在堆上分配对象。如果它不转义本地函数,编译器可以自由地在堆栈上分配它(虽然它不做任何保证;这取决于指针转义分析是否可以证明指针保持在该函数的本地)。

2021-12-08