gpt4 book ai didi

c# - 为什么 Struct 中属性的顺序会改变实例的大小?

转载 作者:太空狗 更新时间:2023-10-29 23:31:02 25 4
gpt4 key购买 nike

<分区>

我得到了一个包含以下字段的结构

public struct Person
{
public int Age;
public short Id;
public byte Marks;
}

当我初始化它并检查内存大小时,我得到的大小为 8。

Person instance = new Person {Age = 10, Id = 1,Marks = 75};
Console.WriteLine(Marshal.SizeOf(instance));

但是,当我如下更改顺序并执行它时,我得到的大小为 12。

public struct Person
{
public byte Marks;//1 byte
public int Age;//4
public short Id;//2
}

理想情况下,它应该是 7 个字节。然而,从这个链接 msdn我可以理解开销分配确实发生了。但是,为什么不一致呢?为什么结构内属性的顺序决定了其实例的大小?

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