相关疑难解决方法(0)

为什么在这种情况下不会发生填充?

据我所知,默认情况下将完成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的成员不会以两个的倍数对齐?

谢谢.

c structure padding

13
推荐指数
3
解决办法
2955
查看次数

使用memcpy方法

我正在寻找如何编写像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)

{谢谢你的帮助=)}

c arrays pointers memcpy

-4
推荐指数
1
解决办法
156
查看次数

标签 统计

c ×2

arrays ×1

memcpy ×1

padding ×1

pointers ×1

structure ×1