Go的内存对齐

落爺英雄遲暮 提交于 2020-04-04 16:48:31

从煎鱼那看的,也是扫盲系列,细节具体等慢慢补充,先开题感受下。

 

 

这就是没内存对齐,这就导致了我们取1-4花了两步。实际上我们很多都是默认开内存对齐的,那么还有什么研究的,可以稍微优化一些,比如下面这种。

 

type Part1 struct {
    a bool
    b int32
    c int8
    d int64
    e byte
}

type Part2 struct {
    c int8
    a bool
    e byte
    b int32
    d int64
}

func main() {
    part1 := Part1{}
    part2 := Part2{}
    fmt.Println(unsafe.Sizeof(part1), unsafe.Alignof(part1))
    fmt.Println(unsafe.Sizeof(part2), unsafe.Alignof(part2))
}

输出

32 8
16 8

Part1 axxx|bbbb|cxxx|xxxx|dddd|dddd|exxx|xxxx

Part2 ecax|bbbb|dddd|dddd

 

https://eddycjy.gitbook.io/golang/di-1-ke-za-tan/go-memory-align

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!