内存对齐问题

type W struct {
    b byte
    i int32
    j int64}type W2 struct {
    name string
    age  int32}var w Wvar w2 W2
fmt.Println(unsafe.Sizeof(w), unsafe.Sizeof(w2))

对于w变量我知道内存占用应该是16,但是w2为啥是24呢?求赐教


侃侃无极
浏览 721回答 1
1回答

汪汪一只猫

import "fmt"import "unsafe"func main() {    var bs []byte     fmt.Println("[]byte:", unsafe.Sizeof(bs))    var str string     fmt.Println("string:", unsafe.Sizeof(str))    var i64 int64     fmt.Println("int64:", unsafe.Sizeof(i64))    var i32 int64     fmt.Println("int32:", unsafe.Sizeof(i32))    var stru struct{}     fmt.Println("struct:", unsafe.Sizeof(stru))        }文档上这么写的Sizeof takes an expression x of any type and returns the size in bytes of a hypothetical variable v as if v was declared via var v = x. The size does not include any memory possibly referenced by x. For instance, if x is a slice, Sizeof returns the size of the slice descriptor, not the size of the memory referenced by the slice.
打开App,查看更多内容
随时随地看视频慕课网APP