此链接:http : //research.swtch.com/godata
它说(切片部分的第三段):
因为切片是多字结构,而不是指针,切片操作不需要分配内存,甚至不需要分配内存,切片头通常可以保存在堆栈中。这种表示使得切片的使用与在 C 中传递显式指针和长度对一样便宜。Go 最初将切片表示为指向上述结构的指针,但这样做意味着每个切片操作都分配了一个新的内存对象。即使使用快速分配器,这也会为垃圾收集器带来大量不必要的工作,而且我们发现,就像上面的字符串一样,程序避免了切片操作,而转而传递显式索引。删除间接和分配使切片足够便宜,以避免在大多数情况下传递显式索引。
什么...?为什么它不分配任何内存?如果是多字结构还是指针?不需要分配内存吗?然后它提到它最初是指向该切片结构的指针,并且需要为新对象分配内存。为什么现在不需要这样做?非常困惑
慕标琳琳
ibeautiful
相关分类