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字节对齐的。

    评论

报告相同问题?

悬赏问题

  • ¥200 总是报错,能帮助用python实现程序实现高斯正反算吗?有偿
  • ¥15 对于squad数据集的基于bert模型的微调
  • ¥15 为什么我运行这个网络会出现以下报错?CRNN神经网络
  • ¥20 steam下载游戏占用内存
  • ¥15 CST保存项目时失败
  • ¥15 树莓派5怎么用camera module 3啊
  • ¥20 java在应用程序里获取不到扬声器设备
  • ¥15 echarts动画效果的问题,请帮我添加一个动画。不要机器人回答。
  • ¥15 Attention is all you need 的代码运行
  • ¥15 一个服务器已经有一个系统了如果用usb再装一个系统,原来的系统会被覆盖掉吗