首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

64bits v 32bits解决方法

2012-04-14 
64bits v 32bits以下是数据在堆栈和指针赋值中的未对齐示例。对指针变量的赋值使用的内存地址不匹配8字节边

64bits v 32bits
以下是数据在堆栈和指针赋值中的未对齐示例。对指针变量的赋值使用的内存地址不匹配   8   字节边界,因为它是从“temp”数组的第二个字符开始的。
 
char   temp[10];
double   *var;
var=(double   *)(&temp[1]);


在最佳情况下,诸如此类的未对齐会影响性能。代码的速度以及可执行文件的大小都会受到负面影响。这是因为编译器将添加额外的代码来修正未对齐,因而对取消引用的内存空间执行简单的读写操作都需要“先对齐后操作”这个过程。
============================
可以解釋下?

[解决办法]
那不已经说得很明白了吧?
double需要从8的整数倍的地址开始。
[解决办法]
你可以看看反汇编出来的代码

热点排行