首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

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

2013-03-14 
Marshal.SizeOf返回值不正确?using Systemusing System.Collections.Genericusing System.Textusing Sy

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

热点排行