li_tao91 2017-05-23 09:34 采纳率: 50%
浏览 1317
已结题

C#结构内存布局问题。

[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条回答 默认 最新

  • threenewbee 2017-05-23 15:55
    关注

    结构体按照4字节对齐的。

    评论

报告相同问题?

悬赏问题

  • ¥15 教务系统账号被盗号如何追溯设备
  • ¥20 delta降尺度方法,未来数据怎么降尺度
  • ¥15 c# 使用NPOI快速将datatable数据导入excel中指定sheet,要求快速高效
  • ¥15 再不同版本的系统上,TCP传输速度不一致
  • ¥15 高德地图点聚合中Marker的位置无法实时更新
  • ¥15 DIFY API Endpoint 问题。
  • ¥20 sub地址DHCP问题
  • ¥15 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式