如何在内存中布局结构数组?

type Point struct {

     x, y int

}


var arr [4]Point

数组将如何在内存中布局?


实际物体会并排放置吗


[Point[x][y]][Point[x][y]][Point[x][y]][Point[x][y]]

或者数组是一个指针数组,对象存储在其他地方,比如 Java?


[&Point0][&Point1][&Point2][&Point3]

堆中的某处:


...[Point0[x][y]] ... [Point1[x][y]] ....  [Point3[x][y]] ... [Point2[x][y]]

另外,如何make()在内存中布置切片?


make([]Point, 10)


慕桂英3389331
浏览 166回答 1
1回答

白板的微信

4 Points 在内存中是连续的,就像你的第一个例子一样。如果您希望它们成为指针,那么您需要[4]*Point.一个切片Point创建了一个使用(指向)支持数组的切片,其中,Points 将是并排的(并且[]*Point将是一个指向 的指针Point)。有关Go 数据结构的内存布局的详细解释,请参见http://research.swtch.com/godata。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go