warning C4366: The result of the unary '&' operator may be unaligned

warning C4366: The result of the unary '&' operator may be unaligned

这个错误的意思是取地址的对象不是内存对齐的,

比如

#pragma pack(1)

struct a

{

int a;

char b;

double c;

char d;

}

#pragma pack()


如果取结构体a的地址是没问题的,但是如果取结构体a中字段b的地址可能就有问题了,取地址c的话也有问题,因为内存中区地址有4字节或8字节对齐,64位系统或32位系统的地址对齐机制可能不一样。

所以如果出于数据安全需要严格按照单字节对齐,就不能取不对齐的字段的地址了,要取整个结构体的指针,然后用取字段赋值,或者偏移赋值来设置字段的值了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值