vs下的字节对齐的一些疑问

来源:互联网 发布:手机编辑epub软件 编辑:程序博客网 时间:2024/06/10 16:55
double p= 0;double a = (int)(&p);int *aa = (int *)&p;double b = (int)(aa);printf("%d  %lf %lf\n", aa,b,b/8);

这里输出 b/8 有时候会输出非整数(.5)
这里理解为地址都是逻辑地址 如果逻辑地址起始地实际地址也是个 b/8非整数(.5)
那就对了,double要放在起始地址,这个起始地址的物理地址能被8整出。

如果double类型变量起始地址的物理地址不能被8整出,读取的时候按2,4,8,16这些块读取的时候,一次读取无法完整读取到,需要俩次,这样效率低

也许这个思考过程是有问题的,但是 上面的程序可以重新找个理由去解释
大概我认为是个底层的问题,我们看到的是逻辑地址,所以出现问题应该从底层去解决。

原创粉丝点击