这个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; } 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我的计算方式是:假设是32位struct默认是按声明顺序布局字段的,那么point就是(1+3)*3=12byte,class默认有CLR自动优化布局的,假设它会把前四个byte类型的变量和在一起,就是4byte+4*12=52byte,在加上额外的8byte,就是60.问题是point这个结构是多大,,,12还是4? 取决于对齐方式。数据本身最少16字节。如果是类(class),每个实例还有另外8个字节(引用块和同步块)的额外开销。 那单单那个point是多少呢?12还是4? point默认是按声明顺序布局,3个字段都是byte类型,都不够4byte大小。我迷惑的是CLR怎么对齐这三个字段,是没一个单独加3个byte对齐还是先把这3个字段和一块再加一个byte对齐呢? lz搜索一下StructLayout、FieldOffset吧,讲的比较清楚。 "a b c" 匹配 abc 中间空格不定 c#判断波峰波谷. .net安装完成后的可选操作如何实现 类继承问题!!想不明白 关于hashtable的性能 一段代码求解! C#中有没有什么方法可以获得自定义的数组、结构的首地址 求几个关于窗体的api函数 用C#复制打开的Excel文件并再打开 求大神解答,winform的绘图问题 接口的实现方式的疑惑 如何获取属性名称?
struct默认是按声明顺序布局字段的,那么point就是(1+3)*3=12byte,
class默认有CLR自动优化布局的,假设它会把前四个byte类型的变量和在一起,就是4byte+4*12=52byte,在加上额外的8byte,就是60.问题是point这个结构是多大,,,12还是4?
数据本身最少16字节。如果是类(class),每个实例还有另外8个字节(引用块和同步块)的额外开销。