美文网首页
C# struct 中的内存对齐

C# struct 中的内存对齐

作者: 百里有声 | 来源:发表于2022-09-03 13:10 被阅读0次

c#中char占两个字节,ushort占2个字节,int占4个字节

struct下字段占用按8的倍数补齐

   struct AAAA
    {
        public char name;
        public ushort value;
        public ushort at;
        public char end;
    }
    struct BBBB
    {
        public char name;
        public char second;
        public ushort value;
        public ushort at;
        public char end;
        public int t;
        public int e;
    }
    struct EEEE
    {
        public char name;
        public char second;
        public ushort value;
        public ushort at;
        public char end;
    }
    struct CCCC
    {
        public ushort value;
        public ushort at;
        public char name;
        public char end;
    }
    struct DDDD
    {
        public char name;
        public char end;
    }
    class TestO
    {
        public int t = 1;
        public int e = 1;
        public int m = 1;
        public int p = 1;
    }
    class TestP
    {
        public AAAA a;
        public BBBB b;
        public CCCC c;
        public DDDD d;
    }
    class TestQ
    {
        public AAAA a;
        public EEEE e;
        public CCCC c;
    }

 class Program
    {
        static void Main(string[] args)
        {
            TestP p = new TestP();
            p.a.name = 'A';
            p.a.value = 'a';
            p.a.end = '1';

            p.b.name = 'B';
            p.b.value = 'b';
            p.b.end = '1';
            p.b.t = 1000;
            p.b.e = 1000;

            p.c.name = 'C';
            p.c.value = 'c';
            p.c.end = '1';

            p.d.name = 'D';
            p.d.end = '1';

            TestQ q = new TestQ();
            q.a.name = 'A';
            q.a.value = 'a';
            q.a.end = '1';

            q.e.name = 'e';
            q.e.value = 'e';
            q.e.end = '1';

            q.c.name = 'C';
            q.c.value = 'c';
            q.c.end = '1';

            TestO o = new TestO();

        }
 }
image.png

相关文章

  • C# struct 中的内存对齐

    c#中char占两个字节,ushort占2个字节,int占4个字节 struct下字段占用按8的倍数补齐

  • iOS底层探索-calloc

    一、calloc底层探索 1.1、内存对齐原则 a:数据成员对齐规则:结构(struct)(或联合(union))...

  • iOS 内存对齐

    一、结构体内存对齐 1.1 结构体内存对齐三大原则 数据成员对⻬规则结构体(struct)或联合体(union)的...

  • 从结构体内存对齐到OC对象内存对齐

    1、结构体内存对齐 结构体对齐规则:1:数据成员对⻬规则:结构(struct)(或联合(union))的数据成员,...

  • 结构体内存对齐

    不同数据类型占用字节图 内存对齐的原则 1、数据成员对齐规则: 结构(struct)(或联合(union)的)数据...

  • (二) 内存对齐

    内存对齐规则 1: 数据成员对齐规则: 结构(struct) (或联合(union))的数据成员, 第一个数据成员...

  • 内存对齐

    内存对齐规则: 数据成员对齐规则结构(struct)(或联合(union))的数据成员,第一个数据成员放在offs...

  • dart 中 没有 struct, 如何解决引用问题...

    在 c# 中, struct 是值类型. 但是在 dart 中, 没有东西对标 struct. 以下片断是C# 代...

  • iOS中关于内存对齐的探究

    结构体内存对齐的三大原则 1、数据成员对齐规则:结构(struct)(或联合(union))的数据成员,第一个数据...

  • 字节对齐之struct大小计算方式

    内存对齐主要可以提高cpu的寻址访问速度,以及方便在各平台之间移植等作用。 下面介绍一下字节对齐后struct和u...

网友评论

      本文标题:C# struct 中的内存对齐

      本文链接:https://www.haomeiwen.com/subject/eaqmnrtx.html