社区
C语言
帖子详情
奇怪,怎么多出两个字节?
sizheng0320
2006-03-02 09:53:12
struct T_BITMAPFILEHEADER { // bmp文件头
WORD bfType;
DWORD bfSize;
WORD bfReserved1;
WORD bfReserved2;
DWORD bfOffBits;
};
上面这个结构体,自己数出来以及文件中实际的都是14个字节,可是为什么sizeof得到的是16个字节啊????
...全文
166
13
打赏
收藏
奇怪,怎么多出两个字节?
struct T_BITMAPFILEHEADER { // bmp文件头 WORD bfType; DWORD bfSize; WORD bfReserved1; WORD bfReserved2; DWORD bfOffBits; }; 上面这个结构体,自己数出来以及文件中实际的都是14个字节,可是为什么sizeof得到的是16个字节啊????
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
13 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
姜湖成哥
2006-03-02
打赏
举报
回复
是字节对齐,在深入理解计算机系统那本书中说了,WORD两个字节,那么它后面的DWORD 4个字节就要在前面空两个出来,形成DWORD是从4的倍数开始;然后后面的两个WORD分别是两个字节,共4个字节;而最后一个DWORD恰好从4的倍数开始;所以共16个字节了。
jinjiajie
2006-03-02
打赏
举报
回复
字节对齐,编译器设置一下好了...
du51
2006-03-02
打赏
举报
回复
可是为什么sizeof得到的是16个字节
按四个字节读的.不足的补齐.
4*4=16>14
呵呵,刚好.
zez
2006-03-02
打赏
举报
回复
字节对齐...
最最基本的东西了.. 看看书先.. 或者google一下..
就在这里都讨论的百八十遍了...
alen_ghl
2006-03-02
打赏
举报
回复
字节对齐问题(编译器为了提高变量存取速度)
你可以在定义结构体前加上
#pragma pack(push,1) // 一字节对齐
strcut ......
...
#pragma pack(pop)
这样就会就会是你所希望的字节数了
关于字节对齐的具体问题,自己到网上搜索一下,好多
aa3000
2006-03-02
打赏
举报
回复
叫什么位数对齐
du51
2006-03-02
打赏
举报
回复
这个设到2就行了.越小时间越长.
jixingzhong
2006-03-02
打赏
举报
回复
对齐到 1 的话
在程序前使用
#pragma pack(push,1)即可
iamcaicainiao
2006-03-02
打赏
举报
回复
study.
jixingzhong
2006-03-02
打赏
举报
回复
这个是系统默认的情况下的结果,
也有的人希望节省空间,
强制对齐到 1 ,
也就是没有任何的填充,
那么,
结构体的大小就是 14 了 ~
jixingzhong
2006-03-02
打赏
举报
回复
字节对齐:
struct T_BITMAPFILEHEADER { // bmp文件头
WORD bfType; //0到1 两个字节
DWORD bfSize; //由于对齐,从4开始,4.5.6.7四个字节
WORD bfReserved1; //8 .9 两个字节
WORD bfReserved2; //10 . 11两个字节
DWORD bfOffBits; //12 .13 .14. 15 四个字节
}; //共 0 - 15 是16个字节,对齐到 4 (变量align)还是16
所以结果是 16 个字节!!
pagechen
2006-03-02
打赏
举报
回复
为什么有内存对齐?
提高内存读写效率。
现在的memory都有带宽多少位和总线多少位的说法。比如32位系统,硬件设计时为了节约导线,只能按32位的整数倍去选取地址读写,而不能直接读取任意的32位。
就像N个仓库,每个仓库为32个货位。
WORD bf1;
DWORD bf2;
WORD bf3;
WORD bf4;
DWORD bf5;
如何存放?
方案1:把bf1和bf2的前半放在仓库1,bf2后段和bf3方在仓库2 。。。。
方案2:把bf1放在仓库1,bf2放在仓库2,bf3 和bf4放在仓库3。。。。。
现在需要提货bf2,比较两个方案:
1。从仓库1提出一部分,再从仓库2提出另外的部分
2。从仓库2提取
方案2类似于内存对齐到4的情况
逸学堂
2006-03-02
打赏
举报
回复
楼上正解
SpringBoot2整合Vue3+ArcoDesign
字节
跳动Vue
课程简介:该互联网实战项目是基于腾讯开源Tdesign产品框架,前后端分离,开发项目实战,SpringBoot+SpringSecurity+Mybatisplus+MySQL+Knife4j中后台项目产品实战,包括图形展示、权限管理、用户管理等功能。【后端】Spring Boot2 框架 开发的一站式解决方案Spring Security5 认证和授权框架MyBatisPlus3.3.1 基于 MyBatis 框架的快速研发框架MyBatisCode工具生成 MyBatis 相关代码Jackson提供了处理 JSON 数据的工具Lombok简化对象封装工具 Druid 数据库连接池 【前端技术】Vue3 互联网最火的前端框架Vue Router路由框架Vuex全局状态管理框架Axios前端 HTTP 框架Arco Design
字节
跳动前端模板 ArcoDesign 主要服务于
字节
跳动旗下中后台产品的体验设计和技术实现,主要由UED设计和开发同学共同构建及维护。Arco Design 是一套企业级 UI 解决方案,拥有系统的设计规范和资源,依据此规范提供了覆盖 React、Vue、Mobile 的原子组件。ArcoDesign 提供的能力完善的基础组件基于 Arco Design 设计规范,Arco 提供了 67 个基础组件。同时,Arco 在这些基础组件的设计上,也开放了细粒度的配置,方便后续拓展。
int 类型究竟多少
字节
?
今天发现NEON技术中 int类型的
字节
数是2,感觉很
奇怪
,最早写51单片机时也是2,后来到了观念转变成了4,现在有遇到了2. 一、转自 http://www.tuicool.com/articles/6j2uqi2 最近在看深入理解计算机系统这本书,上面提到了在32位机器和64机器中int类型都占用4个
字节
。后来,查了The C Programming language这本书,
为什么TCP报文段的最大数据荷载是65495
字节
?
首先这是个误区,,TCP报文段并不是指在TCP层封装的数据,,,它事实上是在IP层封装的(但是好像一般称呼数据报为运输层),, IP层中有两种数据表现, 一种是 报文段 最小数据长度为1460
字节
最大数据长度为65495
字节
一种是 报文分片(报文分段) 长度 65495
字节
是由于 数据报的长度是由
两个
字节
的标识决定的,其最大长度为65535
字节
,然后又需要封装TCP报头(至少20
字节
) 和ip头(至少20
字节
) 所以最大长度为65495
字节
...
GB2312 英文 几个
字节
字符集的问题
字符集的问题 不分享无用的东西 此类问题包括: GB2312英文字符几个
字节
GBK中的英文字符占用一个
字节
还是
两个
字节
???占几个
字节
要明确一下的概念,方便长期记忆 字符集是干嘛的.? 字符集是标识存储于计算机中的数据的格式的集合 这么说显得很枯燥,而且说定义也很难理解 实际上可以理解为字符集是为了: **解决中国跟外国的文字的不同而存在的**(方便理解) 在java中,很多人问...
为什么通常一个UDP封包大小不能超过500个
字节
?
原文标题: > RF: http://my.chinaunix.net/space-7240278-do-thread-id-5131.html MTU 1500
字节
: 以太网.1492
字节
: PPPoE.1472
字节
: ping1468
字节
: DHCP1430
字节
: VPN and PPTP 576
字节
: 拨号ISP RFC 1883: 最小576,新的可能会是1280 U
C语言
69,368
社区成员
243,081
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章