vc6关于数据结构的奇怪的问题

qingcairousi 2005-10-19 11:17:32
工程1中的某个结构:
struct FileHead{
long int filesize;
char filename[28];
unsigned long int fileoffset;
WORD checksum;
};
工程2中的某个结构:
typedef struct tagFileInfo
{
DWORD filesize;
char fullfilename[28];
short int filechecksum;
DWORD filesizetransfered;
}FileInfo;

两个工程都在同一台机器上用vc6调试和运行

然后就出来这么个结果:
sizeof(FileHead)-sizeof(FileInfo)==2

哪位高手知道这是什么原因?
...全文
133 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
oyljerry 2005-10-19
  • 打赏
  • 举报
回复
默认4字节对齐,前一个38bytes,后一个40bytes
oyljerry 2005-10-19
  • 打赏
  • 举报
回复
字对齐
长度发生了变化
84830388 2005-10-19
  • 打赏
  • 举报
回复
哈哈。字节对齐问题啊。
kobefly 2005-10-19
  • 打赏
  • 举报
回复
楼主用pack了吗?



如果是默认对齐的话

是相等的
晨星 2005-10-19
  • 打赏
  • 举报
回复
字对齐问题。
顺序不一样了,sizeof可能不一样的。
zh1369 2005-10-19
  • 打赏
  • 举报
回复
字节对齐 来晚了

张晓博 2005-10-19
  • 打赏
  • 举报
回复
字节对齐没有错,但是对齐方案是一struct内占堆多字节的类型整数倍基础的,我举个例子:
struct structlen{
_int64 param1;
char param2;
};
sizeof(structlen)=16;
而 typedef struct tagFileInfo
{
DWORD filesize;
short int filechecksum;
char helo;
}FileInfo;
sizeof(FileInfo)=8;
因此从上面的例子可以看得出来,他分配存储的原则就是以最大类型的整数倍为原则的

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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