据我所知,默认情况下将完成4字节对齐.说
typedef struct
{
int data7;
unsigned char data8;
//3 -bytes will be added here.
}Sample1;
Run Code Online (Sandbox Code Playgroud)
所以sizeof(Sample1)将是8.
但是对于以下结构,为什么没有发生填充?
typedef struct
{
unsigned char data1;
unsigned char data2;
unsigned char data3;
unsigned char data4;
unsigned char data5;
unsigned char data6;
}Sample2;
Run Code Online (Sandbox Code Playgroud)
但sizeof(Sample2)仅为6.Sample2不是4字节对齐的结构?
编辑::
按照Wiki
数据对齐意味着将数据放入存储器偏移量等于字大小的某个倍数,这会因CPU处理内存的方式而提高系统性能.
但Sample2的成员不会以两个的倍数对齐?
谢谢.
我正在寻找如何编写像memcpy这样的函数.将整数或字符从一个数组复制到另一个数组的方法.我的意思是,它使用memcpy,而不使用它.但就我而言,它不起作用.
void Memcpy( void *from, void *to, int dimension, int length ) {
if(dimension == sizeof(char)){
char *copyFrom = (char *)from;
char *copyTo = (char *)to;
for(int i = length; i < length; i++)
copyTo[i] = copyFrom[i];
}
if(dimension == sizeof(int)){
int *copyFrom = (int *)from;
int *copyTo = (int *)to;
for(int i = length; i < length; i++)
copyTo[i] = copyFrom[i];
}
}
Run Code Online (Sandbox Code Playgroud)
{谢谢你的帮助=)}