看了一篇内存文章,有几点不明(-)。
2、对齐开销
很多的平台都要求数据的对齐,在数据的间隙或尾端进行填充,我们可以利用sizeof进行测试:
struct A
{
char c1;
int i;
char c2;
};
在我们进行如下运算的时候,我们可能会发现sizeof(A)=12,但是char只是占用1个字节,int占用4个字节,加起来也不过6个字节,怎么会多了一倍呢?
这就是对齐现象在起作用,实际占用的空间是这3个变量都占用4个字节,在每一个char型的末尾都会填充3个字节的0。那你把char c2和 int i交换位置,看看结果是多少?怎么解释呢?
初看起来,只是一种浪费,为什么会有这个特点呢?目的很简单,就是要使bus运输量达到最大
------------------------------------------------------------------
问一:所为四个字节,是否跟os有关32(4bytes),16(2bytes).
问二:如果把char c2和 int i交换位置,结果是否为8bytes.
问三:如用memcpy(A, temAbuf, sizeof(A));这样是否会出错。