日期:2014-05-17  浏览次数:20877 次

这个class占多少内存。。。

    public class  MyClass
    {
        byte b1;
        byte b2;
        byte b3;
        byte b4;
        Point p1;
        Point p2;
        Point p3;
        Point p4;
    }
    public struct Point
    {
        byte x;
        byte y;
        byte z;
    }

------解决方案--------------------
取决于对齐方式。
数据本身最少16字节。

如果是类(class),每个实例还有另外8个字节(引用块和同步块)的额外开销。
------解决方案--------------------
不会,学习,帮你顶顶
------解决方案--------------------
引用:
引用:

取决于对齐方式。
数据本身最少16字节。

如果是类(class),每个实例还有另外8个字节(引用块和同步块)的额外开销。

那单单那个point是多少呢?12还是4?
还是那个问题,取决于你是怎么对齐的.
------解决方案--------------------
lz搜索一下StructLayout、FieldOffset吧,讲的比较清楚。

引用:
引用:
.......
还是那个问题,取决于你是怎么对齐的.

point默认是按声明顺序布局,3个字段都是byte类型,都不够4byte大小。我迷惑的是CLR怎么对齐这三个字段,是没一个单独加3个byte对齐还是先把这3个字段和一块再加一个byte对齐呢?

------解决方案--------------------
我是觉得,占用多少内存,有很大关系么??还是抓紧把程序编好才是正经