NotePublic/Software/Development/Language/Go/Package/Unsafe/关于_Go_结构体内存大小的一点小知识.md

656 B

关于 Go 结构体内存大小的一点小知识

在 go 语言里我们经常使用 struct 作为数据存储,由于指针对齐问题,可能结构体的大小也有所不同。

type DemoOne struct {
    id  int8
    age int32
    add int8
}
type DemoTwo struct {
    age int32
    id  int8
    add int8
}

上述两个内容一致的结构体在占用的内存是多少呢?

func main() {
    fmt.Println(unsafe.Sizeof(DemoOne{}))//size为12
    fmt.Println(unsafe.Sizeof(DemoTwo{}))//size为8
}

由于指针对齐的问题,相同属性的结构体,因为属性的顺序不同也会产生不同大小的内存占用。