golang内存对齐的重要性

结构体中字段类型的改变直接造成内存对齐结果的改变,是的占用内存空间也不一样

package main

import (
	"fmt"
	"unsafe"
)

func main() {

	var xx struct {
		a bool
		b int32
		c []int
	}

	var x struct {
		a int32
		b []int
		c bool
	}
	fmt.Println("SIZE")
	fmt.Println(unsafe.Sizeof(x))  //32
	fmt.Println(unsafe.Sizeof(xx)) //40
	fmt.Println(unsafe.Sizeof(x.a))
	fmt.Println(unsafe.Sizeof(x.b))
	fmt.Println(unsafe.Sizeof(x.c))
	fmt.Println("ALIGN")
	fmt.Println(unsafe.Alignof(x))
	fmt.Println(unsafe.Alignof(x.a))
	fmt.Println(unsafe.Alignof(x.b))
	fmt.Println(unsafe.Alignof(x.c))
	fmt.Println("OFFSET")
	fmt.Println(unsafe.Offsetof(x.a))
	fmt.Println(unsafe.Offsetof(x.b))
	fmt.Println(unsafe.Offsetof(x.c))
}

相关文章

显卡天梯图2024最新版,显卡是电脑进行图形处理的重要设备,...
初始化电脑时出现问题怎么办,可以使用win系统的安装介质,连...
todesk远程开机怎么设置,两台电脑要在同一局域网内,然后需...
油猴谷歌插件怎么安装,可以通过谷歌应用商店进行安装,需要...
虚拟内存这个名词想必很多人都听说过,我们在使用电脑的时候...
win11本地账户怎么改名?win11很多操作都变了样,用户如果想要...