社区
C++ 语言
帖子详情
struct的sizeof问题
frland
2006-08-16 08:38:51
比如
typedef struct
{
BYTE8 p1;
BYTE8 p2;
BYTE8 p3;
} s1;
t=sizeof(s1);
结果t会是4,而不是3
那样用memset(&p,0,sizeof(s1));
这样的语句给s1类型清零会不会有问题
...全文
271
6
打赏
收藏
struct的sizeof问题
比如 typedef struct { BYTE8 p1; BYTE8 p2; BYTE8 p3; } s1; t=sizeof(s1); 结果t会是4,而不是3 那样用memset(&p,0,sizeof(s1)); 这样的语句给s1类型清零会不会有问题
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
blue_zyb
2006-08-16
打赏
举报
回复
因为系统的机器字长是4位,所以从字节对齐可以符合系统的直觉思维,也就是可以获得更好的访问效率。至于人的知觉思维,我们经常探讨sizeof的问题,但是我觉得具体实际问题中并不要过多考虑struct成员的分布和size,你只需要用.运算符进行访问,系统自然会帮你找到对应的成员
frland
2006-08-16
打赏
举报
回复
问题应该是楼上说的那样,只是懒所以少打了几个字。为什么要有这种对齐的要求,我觉得跟直觉思维是一种矛盾,也容易造成错误
alene_cn
2006-08-16
打赏
举报
回复
本来我也认为是字节对齐问题,可我刚才用VC7.1试了一下,sizeof(s1)=3,s1定义如下:
typedef struct
{
BYTE p1;
BYTE p2;
BYTE p3;
}s1;
如果s1定义如下:
typedef struct
{
BYTE p1;
BYTE p2;
BYTE p3;
int n;
}s1;
则sizeof(s1)=8,这个倒是符合字节对齐规律了。
YeTimmy
2006-08-16
打赏
举报
回复
只不过是字节对齐而已,没问题的
不过,当你的struct里面有虚函数的时候就会有问题了
无知者无谓
2006-08-16
打赏
举报
回复
字节对齐问题
Allen_zhang
2006-08-16
打赏
举报
回复
用sizeof(s1)求得的应该是s1的指针空间,所以应该是4,在高质量C/C++编程中有说到
Go语言官方文档学习笔记(第五季)
第五季内容包括以下十个部分: 1-
Struct
s 2-
Struct
Fields 3-Pointers to
struct
s 4-
Struct
Literals 5-Arrays 6-Slices 7-Slices are like references to arrays 8-Slice literals 9-Slice defaults 10-Slice ...
C++中的
sizeof
(
struct
)
关于C++中的
sizeof
(
struct
)是面试和笔试中经常出现的
问题
,下面将一些常见
问题
总结如下: 1 定义一个结构体,里面是空的,
sizeof
(
struct
)为多少?
sizeof
(
struct
)=1,因为当我们在申请该类型的实例时,它必须在...
struct
的
sizeof
计算
原则1、数据成员对齐规则:结构(
struct
或联合union)的数据成员,第一个数据成员放在offset为0的地方,以后每个数据成员存储的起始位置要从该成员大小的整数倍开始(比如int在32位机为4字节,则要从4的整数倍地址...
C语言
sizeof
(
struct
)讲解
struct
My
Struct
{ double dda1; char dda; int type }; 对结构My
Struct
采用
sizeof
会出现什么结果呢?
sizeof
(My
Struct
)为多少呢?也许你会这样求:
sizeof
(My
Struct
)=
sizeof
(double)+
sizeof
(char)+
sizeof
(int...
关于
sizeof
(
struct
)
一般情况下,编译器会把
struct
中的成员作对齐处理,所以
sizeof
后不是等于所以成员大小之和。 VC编译器一般会按照顺序为
struct
中的成员分配内存: (1)分配一个大小等于基大小的内存; (2)从第一个到最后一个...
C++ 语言
64,648
社区成员
250,476
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章