两个不一样的结构为什么会一样大?

ProgrammingRing 2013-12-09 12:05:30
下面的两个结构SS和TT不一样,但sizeof却一样大,都是56,为什么?

#include <stdio.h>
#include <windows.h>
#include <tchar.h>

typedef struct _VM_COUNTERS {
SIZE_T PeakVirtualSize;
SIZE_T VirtualSize;
ULONG PageFaultCount;
SIZE_T PeakWorkingSetSize;
SIZE_T WorkingSetSize;
SIZE_T QuotaPeakPagedPoolUsage;
SIZE_T QuotaPagedPoolUsage;
SIZE_T QuotaPeakNonPagedPoolUsage;
SIZE_T QuotaNonPagedPoolUsage;
SIZE_T PagefileUsage;
SIZE_T PeakPagefileUsage;
} VM_COUNTERS;
typedef struct _TT
{
LARGE_INTEGER CreateTime;
VM_COUNTERS VmCounters;
} TT;
typedef struct _SS
{
LARGE_INTEGER CreateTime;
VM_COUNTERS VmCounters;
ULONG PrivateUsage;
} SS;

int _tmain(int argc, _TCHAR* argv[])
{
_tprintf(TEXT("%d %d\r\n"), sizeof(SS), sizeof(TT));
return 0;
}
// Output:
// 56 56
// 请按任意键继续. . .
...全文
68 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
threenewbee 2013-12-09
  • 打赏
  • 举报
回复
我们改变下顺序: typedef struct _SS { ULONG PrivateUsage; LARGE_INTEGER CreateTime; VM_COUNTERS VmCounters; } SS; 就是64了。你看到,它总是8的倍数。说明它按照8字节(64bit)对齐的。
threenewbee 2013-12-09
  • 打赏
  • 举报
回复
因为有对齐 http://pppboy.blog.163.com/blog/static/30203796201082494026399/

69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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