网页
资讯
视频
图片
知道
文库
贴吧
地图
采购
进入贴吧
全吧搜索
吧内搜索
搜贴
搜人
进吧
搜标签
日
一
二
三
四
五
六
签到排名:今日本吧第
个签到,
本吧因你更精彩,明天继续来努力!
本吧签到人数:0
一键签到
成为超级会员,使用一键签到
一键签到
本月漏签
0
次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行
补签
。
连续签到:
天 累计签到:
天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
03月01日
漏签
0
天
c语言吧
关注:
798,751
贴子:
4,349,262
看贴
图片
吧主推荐
视频
游戏
18
回复贴,共
1
页
<<返回c语言吧
>0< 加载中...
结构体变量所占字节长度
只看楼主
收藏
回复
Kawendish
酱油
4
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
初学者,有个问题,就是结构体变量所占字节长度是最长字节的整数倍,那是否可以这样理解sizeof(结构体)的结果就会是结构体内 最长字节的、能容下所有数据字节长度加和的 最小整数倍呢
这个倍数到底是怎么来的
洪水证人
团子家族
10
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
这属于“内存对齐”的知识点,根本原因跟电路原理有关。
总之,基本类型的变量是几字节,就必须对齐到几字节的地址。4字节整数的指针值也是4字节的倍数才行。主流电脑里只有英特尔CPU允许内存不对齐,但会付出执行速度变慢的代价。
结构体需要保证每个结构成员对齐,同时整个结构体也要按照最大的成员对齐,才能保证所有数据都是对齐的。
豪杰兴邦
团子家族
10
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
每个数据是四个字节,当然几个不足四字节的数据凑一个四字节也行,比如2+2 1+1+2 1+1+1+1,如果不能满足就补齐到四个字节比如2+3会变成4+4
GTA小鸡
吧主
14
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
结构体的长度是min(指定对齐粒度,结构体中最大成员类型的对齐粒度)的整数倍
猴萝花惬
大能力者
8
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
好图
乸榭驯挧爨
毛蛋
1
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
其实就是一个优化而已,对齐之后传数据比较方便,就运行更快。
编译的时候可以用一些控制指令关掉结构体内存对齐,或者更改对齐倍数的基准。
宇皇大帝
大能力者
8
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
char char int 和char int char 占用内存不一样!
__下划线__
异能力者
6
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
b站的 荣文戈-北航 讲了这个,还有计算sizeof的公式,可以去看看
door
才的屑
毛蛋
1
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
我也新手,给结构体分配内存直接sizeof(结构),没想那么多(
遂逸
帕秋莉糕
12
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
请问:“结构体变量所占字节长度是最长字节的整数倍”中的最长字节是什么意思?有具体的概念吗?
史怜梦
毛蛋
1
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
这个问题本质是硬件访问内存方式决定的
登录百度账号
扫二维码下载贴吧客户端
下载贴吧APP
看高清直播、视频!
贴吧页面意见反馈
违规贴吧举报反馈通道
贴吧违规信息处理公示