msdn说
sizeof 运算符只能在不安全的代码块中使用。虽然可以使用 Marshal.SizeOf 方法,但此方法返回的值并不总是与 sizeof 返回的值相同。
和
Marshal.SizeOf 返回类型被编组后的大小,而 sizeof 返回由公共语言运行时分配的大小,包括任何**填充**。
我曾经读过这本书:c# via clr(第 522 页)
那 :
问题 :
1)这里提到的填充:
和书中提到的一样吗?
和
2)如果我有对象类型Person
- 我怎么知道它在内存中的真实大小?
编辑-我为什么需要那个?
请注意:
他们有阅读记录的样本:
using (var accessor = mmf.CreateViewAccessor(offset, length))
{
int colorSize = Marshal.SizeOf(typeof(MyColor)); //<--------HERE
MyColor color;
for (long i = 0; i < length; i += colorSize)
{
accessor.Read(i, out color);
color.Brighten(10);
accessor.Write(i, ref color);
}
}
}
如果报告的尺寸MARSHAL.sizeOF
不是这样的尺寸sizeOF
-我应该选择哪个?一定要准确!!
根据这个样本,他们不考虑填充,他们应该......(或不......)