日期:2014-05-20  浏览次数:20941 次

.net,bool型大家以为几个字节?1个吗?提醒一下,应该是4个。
.net,bool型大家以为几个字节?1个吗?提醒一下,应该是4个。
int size=System.Runtime.InteropServices.Marshal.SizeOf(typeof(bool));

------解决方案--------------------
楼主似乎已经忘了有内存对齐这么一回事。。。。。。。。。。例如:

byte[] buff = BitConverter.GetBytes(false);

你认为会返回一个多大的数组, 4 个字节?
------解决方案--------------------
探讨
是吗? 但是在
struct MyStruct
{
double d;
bool i;
bool i2;
bool i3;
double d2;
}
在顺序对其的情况下,是32字节。若不是bool值为4字节,中间3个怎么会占用16字节。
而把bool改为byte,则是24字节。因为中间3个1字节。

------解决方案--------------------
楼主应该去查一下struct的内存分配规则,有补齐机制的。。。
------解决方案--------------------
Marshal..::.SizeOf 方法 (Type)
Marshal 类 示例 请参见 发送反馈意见 
 

返回非托管类型的大小(以字节为单位)。