【请教】c++ 变量内存地址对齐的问题

NoneWithVoid NoneWithVoid 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
代码如下:

struct st{
int id;
unsigned int num;
float price;
char str[15];
double total;
}


这是输出的各字段的内存地址:
0x22fef0 (id)
0x22fef4 (num)
0x22fef8 (price)
0x22fefc (str)
0x22ff10 (total)

st结构中的str占用15字节空间,内存按照4字节对齐=>total的地址为0x22fefc+16=0x22ff08,但输出的却是0x22ff10,多了4字节,这是怎么回事?

还有,内存对齐和系统相关,因此怎样才能根据st的首地址和偏移量求出total的地址呢?(这里不直接用.运算符,即不使用&st.total,如何按照st的地址求total的地址)

先谢谢了!
...全文

相关推荐

评论 17
收藏 已收藏
分享
返回顶部
NoneWithVoid
C++ 语言 65,214 成员 250,514 内容