永发信息网

c++ 结构体 内存对齐

答案:2  悬赏:30  手机版
解决时间 2021-07-30 19:31
  • 提问者网友:城市野鹿
  • 2021-07-29 22:14

struct struct_x {
char xa;
int xb;
};

struct struct_y
{
char ya;
struct_x yb;
int yc;
double yd;
char ye;
} ;
谁解释一下sizeof(struct_y ) =32 在内存中怎么对齐。谢谢

最佳答案
  • 五星知识达人网友:一袍清酒付
  • 2021-07-29 22:34

基本的结构是下面这样的,最后那个char类型的编程了8个字节,因为若是4的话,当此类型的数组中的第二个元素中的double类型就起始于非8字节整数的地址了


|- 4byet -|- 4byte -|- 4byte -|- 4byte -|-- 8byte --|-- 8byte --|


ya xa xb yc yd ye

全部回答
  • 1楼网友:北方的南先生
  • 2021-07-29 22:58

如何指定4字节对齐的话

struct struct_x { 4---char xa; 4---int xb; };

struct struct_y { 4---char ya; 8---struct_x yb; 4---int yc; 8---double yd; 4---char ye; } ;

sizeof(struct_y)应该是28吧?

我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯