能力值:
( LV2,RANK:10 )
|
-
-
2 楼
http://wenku.baidu.com/view/fcb1c30d6c85ec3a87c2c584.html
我要说的话都在这里,既有原理,又有例子,还讲了为什么要对齐
看好了以后如果有疑问请提出~
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
不知道你是没看完还是没准备继续问。。
在IA64是8bytes对齐要求,所以加了个8字节的ULONG的Reserved变量,用来保证代码里的数据在内存中是这样一个存在状态
地址1 command(系统默认字节)+(8-系统默认)字节的空白
地址2 Reserved(8字节)
地址3 UCHAR(由于是可变数组,我们暂定为1字节)+7字节的空白
但是如果不加8字节的ULONG的Reserved变量,来决定,可能会变成
地址1 command(系统默认字节)+(结构体的自身对齐值和系统默认对齐值的最小值)字节的空白+UCHAR
或者可能是
地址1 command(系统默认字节)+(结构体的自身对齐值和系统默认对齐值的最小值)字节的空白+UCHAR[50]假定总共100个吧
地址2 另一半的UCHAR[50]
可能会UCHAR造成读取错误,或者是一些总线错误
不同架构的CPU为了提高内存访问的速度,决定了某些数据类型只能从特定的起始位置开始读,这样就决定了数据类型必须按照指定的规则在内存中存放,而不能一个接一个的存放。
P.S:术语的说明 请自己阅读上述百度文库的内容来理解
我是跟你同一时间开始看这个知识点的。如果有错误欢迎大神来指正
|
|
|