返回指向Go 中本地結構體的指針
在Go 中,諸如此類的構造用於創建和返回指向本地結構體的指標:
type point struct { x, y int } func newPoint() *point { return &point{10, 20} }
雖然這在C 中可能看起來是錯誤的做法,但Go中的語義不同。
指標逃脫分析和記憶體分配
Go 使用指標逃脫分析來決定指標是否逃離本地堆疊範圍。在上面的範例中,newPoint()傳回的指標確實逃逸了本機函數。結果,物件被分配在堆上。
但是,如果指標保留在函數的範圍內(即,它不會逃逸),則編譯器可以自由分配物件在堆疊上。但是,需要注意的是,編譯器不能保證這一點。
因此,記憶體分配取決於指標逃脫分析是否可以明確得出指標仍然是函數本地的結論。在指標確實逃逸的情況下,例如在提供的範例中,該物件將在堆上指派。
以上是Go 如何處理本地結構體的回傳指標?的詳細內容。更多資訊請關注PHP中文網其他相關文章!