.net,bool型大家以为几个字节?1个吗?提醒一下,应该是4个。

wcl1986_1 2010-04-15 06:54:07
.net,bool型大家以为几个字节?1个吗?提醒一下,应该是4个。
int size=System.Runtime.InteropServices.Marshal.SizeOf(typeof(bool));
...全文
805 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
wcl1986_1 2010-04-17
  • 打赏
  • 举报
回复
明白。
swalp 2010-04-16
  • 打赏
  • 举报
回复
0还是1
paul_yed 2010-04-16
  • 打赏
  • 举报
回复
bool是1啦~~
sizeof 运算符仅适用于值类型,而不适用于引用类型。对于所有其他类型(包括 struct),sizeof 运算符只能在不安全代码块中使用。虽然可以使用 Marshal.SizeOf 方法,但该方法返回的值和 sizeof 返回的值并不总是相同的。Marshal.SizeOf 在已封送处理类型后返回大小,而 sizeof 返回公共语言运行时分配的大小(包括任何空白)。



ChrisAK 2010-04-16
  • 打赏
  • 举报
回复
Marshal..::.SizeOf 方法 (Type)
Marshal 类 示例 请参见 发送反馈意见


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

liuyileneal 2010-04-15
  • 打赏
  • 举报
回复
楼主应该去查一下struct的内存分配规则,有补齐机制的。。。
liuyileneal 2010-04-15
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 wcl1986_1 的回复:]
是吗? 但是在
struct MyStruct
{
double d;
bool i;
bool i2;
bool i3;
double d2;
}
在顺序对其的情况下,是32字节。若不是bool值为4字节,中间3个怎么会占用16字节。
而把bool改为byte,则是24字节。因为中间3个1字节。
[/Quote]
这是因为其中有的内存是空着不用的。。。并不是因为bool占用了四个
wcl1986_1 2010-04-15
  • 打赏
  • 举报
回复
是吗? 但是在
struct MyStruct
{
double d;
bool i;
bool i2;
bool i3;
double d2;
}
在顺序对其的情况下,是32字节。若不是bool值为4字节,中间3个怎么会占用16字节。
而把bool改为byte,则是24字节。因为中间3个1字节。
CGabriel 2010-04-15
  • 打赏
  • 举报
回复
楼主似乎已经忘了有内存对齐这么一回事。。。。。。。。。。例如:

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

你认为会返回一个多大的数组, 4 个字节?

17,740

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 .NET Framework
社区管理员
  • .NET Framework社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧