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

注意:字节对齐

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字节


  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值