您的位置:首页 > 其它

有如下CAT_s结构体定义,回答: 1) 在一台64位的机器上,使用32位编译,Garfield变量占用多少内存空间?64位编译又是如何?

2017-01-12 15:35 471 查看
注意:字节对齐

struct CAT_s

{
int ld;
char Color;
unsigned short Age;
char *Name;
void(*Jump)(void);

}Garfield;

使用32位编译,int占4, char 占1, unsigned short  int占2,char*占4,函数指针占4个,由于是32位编译是4字节对齐,所以该结构体占16个字节。(说明:按几字节对齐,是根据结构体的最长类型决定的,这里是int是最长的字节,所以按4字节对齐)

使用64位编译 ,int占4, char 占1, unsigned short  int占2,char*占8,函数指针占8个,由于是64位编译是8字节对齐,(说明:按几字节对齐,是根据结构体的最长类型决定的,这里是函数指针是最长的字节,所以按8字节对齐)所以该结构体占24个字节。


不能平台数据类型与所占字节表:

数据类型32位机(字节)64位机(字节)备注
char
1
1
 
short
2
2
 
int
4
4
 
long
4
8
32位与64位不同
float
4
4
 
char *
4
8
其他指针类型如long *, int * 也是如此
long long
8
8
 
double
8
8
 
long double
10/12
10/16
有效位10字节。32位为了对齐实际分配12字节;64位分配16字节
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐