指针指向奇数地址的问题
指向奇数地址的指针强制类型转换到short *时出现exception,非法指针。但用结构就不会。
为什么?
例如:
struct ss
{
short sss;
} __attribute__((packed));
char *pch;
short s;
pch = POSITION; //任意奇数地址,比如一个string中间
s = *(short *)pch; //这样执行就出错
s = ((struct ss *)pch)->sss; //这样就可以
为什么呢?