为了账号安全,请及时绑定邮箱和手机立即绑定

C#结构体内存布局问题。

C#结构体内存布局问题。

C#
MM们 2018-12-07 12:04:09
 [StructLayout(LayoutKind.Explicit, Pack = 2)]    public struct RCV_REPORT_STRUCTExV3    {        [FieldOffset(0)]        public System.UInt16 m_cbSize;         [FieldOffset(2)]        public System.UInt32 m_time;            [FieldOffset(6)]        public System.UInt16 m_wMarket;         [MarshalAs(UnmanagedType.ByValArray, SizeConst = 10)]        [FieldOffset(8)]        public char[] m_szLabelName;           [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]        [FieldOffset(18)]             //此处的偏移量位置应该设置为18的,但是报错:在18偏移位置包含一个对象字段,把偏移量设置为                                                 //20程序正常,怎么回事。因为某些原因这个结构的内存大小需要固定,设置为20就会影响到其他字                                                 //段,或者结构太大。先谢谢了!        public char[] m_szName; 
查看完整描述

1 回答

?
LEATH

TA贡献1936条经验 获得超6个赞

大声告诉我数组这个算引用类型还是值类型?

引用类型需要额外4个字节用于引用(64位机器8字节)

查看完整回答
反对 回复 2018-12-24
  • 1 回答
  • 0 关注
  • 836 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信