gpt4 book ai didi

go - go中结构的内存分配

转载 作者:数据小太阳 更新时间:2023-10-29 03:45:48 27 4
gpt4 key购买 nike

<分区>

我最近遇到了 http://golang-sizeof.tips/这解释了如何为结构分配内存。我知道为了确保连续的内存分配,我们在为没有填充的变量分配内存时添加填充将不会获得连续的内存。所以我在我的 64 位计算机上测试了各种组合,发现网站上的结果和我的计算机上的结果不匹配。这是针对这种情况的:

type S2 struct {
a string
b bool
e bool
d int32
f bool
c string
}

主要是,以下代码为我提供了 48 作为变量的大小。

y := S2{"q", true, true,2,true,"w"}
fmt.Println(unsafe.Sizeof(y))

但这与根据 http://golang-sizeof.tips/?t=blahblah 应有的不同.为什么会观察到这种行为? (我希望这不是我电脑的问题)。编辑:从逻辑上讲,在字段 df

之间不需要填充

我还运行了以下代码以确保。

fmt.Println(unsafe.Offsetof(y.a))
fmt.Println(unsafe.Offsetof(y.b))
fmt.Println(unsafe.Offsetof(y.e))
fmt.Println(unsafe.Offsetof(y.d))
fmt.Println(unsafe.Offsetof(y.f))
fmt.Println(unsafe.Offsetof(y.c))

结果:

0
16
17
20
24
32

play.golang.org使用 32 位机器,所以我怀疑在那里可以重现同样的东西!

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com