读书人

Marshal.SizeOf返回值不正确?解决方案

发布时间: 2013-03-14 10:33:15 作者: rapoo

Marshal.SizeOf返回值不正确?
using System;
using System.Collections.Generic;
using System.Text;
using System.Runtime.InteropServices;

namespace MarshalTest
{
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
public struct FileInfo_s
{
public Int32 mBlockNum; //4 Bytes

[MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)] //32 Bytes
public char[] mFileName;

[MarshalAs(UnmanagedType.ByValArray, SizeConst = 33)] //33 Bytes
public char[] mMd5;
};

class Program
{
static void Main(string[] args)
{
FileInfo_s fileInfo = new FileInfo_s();
Console.WriteLine(Marshal.SizeOf(fileInfo)); //72 ?
}
}
}

很奇怪为什么输出的是72个字节,而不是4+32+33 = 69个字节? struct Marshal
[解决办法]
内存对齐
http://bbs.csdn.net/topics/280068138
[解决办法]
http://blog.csdn.net/wyqlxy/article/details/6608819

读书人网 >C#

热点推荐