首页 > 解决方案 > 我刚刚浏览了 Erik Brown 撰写的一篇关于“在您的托管代码中重新发现失落的内存优化艺术”的文章

问题描述

谁能解释一下这个!! 首先Demo导致消耗12个字节,怎么消耗12个,什么时候应该总共8个字节(char = 2Bytes, int = 4 Bytes, char = 2Bytes)

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            Demo d1 = new Demo();
            Demo2 d2 = new Demo2();
            var DemoSize = System.Runtime.InteropServices.Marshal.SizeOf(d1);
            var Demo2Size = System.Runtime.InteropServices.Marshal.SizeOf(d2);
        }
    }
    public struct Demo
    {        
        char c1;
        int i;
        char c2;
    }
    public struct Demo2
    {
        int i;
        char c1;
        char c2;
    }
}

其次Demo2 导致消耗 8 个字节,类型的排序如何导致内存优化为 8 个字节,幕后发生了什么,有人可以指导我找到一篇文章或链接,这会更清楚地说明这一点。

最后如何计算一个类的特定实例在堆上消耗的内存?

标签: c#

解决方案


推荐阅读