结构体和类的字节对齐

原创 2016年08月30日 14:17:43
   编译器为了优化运行效率,对于结构体和类的成员访问会进行字节填充,即字节对齐。在这之前,我们需要知道如下基本信息:

    1 C++中,类和结构体并没有本质的区别。只是默认的访问权限不同。
    2 类和结构体的大小都是数据成员的大小,而不包括累成员函数的大小。
    3 空的类或者空的结构体的大小都为1,而不是0。目前是编译器能够对其进行寻址定位。

     字节对齐通常是已结构体中占用空间最大的一个成员进行对齐的。
     typedef struct
    {
         char c; //占4个字节
         int i; //4个字节
     }TEST,*PTEST;
     32位机上,该结构体的大小为8。

    typedef struct
   {
           char c;  //4
           int i;   //4 
           long long k; //8
     }TEST,*PTEST;
     32位机上,该结构体的大小为16字节。

    typedef struct
    {
           char c;  //8
           long long k; //8 
           int i; //8
      }TEST,*PTEST;
     32位机上,该结构体的大小为24字节。

     typedef struct
    {
           char c;  //占用4个字节,以int对齐
           int m; //占用4个字节,加上c的4个字节和k的8个字节对齐
           long long k; //8 
           int i; //8 已k的8个字节对齐
      }TEST,*PTEST;
     32位机上,该结构体的大小为24字节。

相关文章推荐

字节对齐与结构体大小

  • 2015年03月11日 12:53
  • 26KB
  • 下载

字节对齐与结构体大小

  • 2013年05月06日 13:17
  • 97KB
  • 下载

详解结构体、类等内存字节对齐

转载自:http://zhangyu.blog.51cto.com/197148/673792/ 详解结构体、类等内存字节对齐 标签:结构体 休闲 职场...
  • H002399
  • H002399
  • 2015年12月24日 14:14
  • 191

详解结构体、类等内存字节对齐

先说个题外话:早些年我学C程序设计时,写过一段解释硬盘MBR分区表的代码,对着磁盘编辑器怎么看,怎么对,可一执行,结果就错了。当时调试也不太会,又根本没听过结构体对齐这一说,所以,问题解决不了,好几天...

详解结构体、类等内存字节对齐

先说个题外话:早些年我学C程序设计时,写过一段解释硬盘MBR分区表的代码,对着磁盘编辑器怎么看,怎么对,可一执行,结果就错了。当时调试也不太会,又根本没听过结构体对齐这一说,所以,问题解决不了,好几天...

结构体、类等内存字节对齐

不光结构体存在内存对齐一说,类(对象)也如此,甚至于所有变量在内存中的存储也有对齐一说(只是这些对程序员是透明的,不需要关心)。实际上,这种对齐是为了在空间与复杂度上达到平衡的一种技术手段,简单的讲,...

全面总结sizeof(字节对齐、数组、类(继承、虚函数)、结构体、strlen)*最全面*

最近在论坛里总有人问关于sizeof的问题,并且本人对这个问题也一直没有得到很好的解决,索性今天对它来个较为详细的总结,同时结合strlen进行比较,如果能对大家有点点帮助,这是我最大的欣慰了。 一、...

基本数据类型变量 结构体 union 类的内存字节对齐

系原创,转载时请帖上地址: 什么叫内存字节对齐:就是在内存地址中按照一个规则(这个规则具体是什么在下面说)把一个变量放在它应该在的内存地址,而不是把变量从前到后一个紧挨着一个存放(那是        ...

结构体(struct)的使用、内存分布以及字节对齐测试总结

最近和班上的一些"猿友"重新来完善或重新写以前在学校用C语言实现的数据结构,实现单链表、双向链表、循环链表、树、图等等一些数据结构。需要实现这些数据结构就必须熟练掌握C语言中的自定义类型,即结构体(s...

结构体为什么要4字节对齐?

sizeof与struct求结构体大小的计算方法sizeof浅析(一)——求结构体大小 这篇文章讲了sizeof求结构体大小的计算方法,并给出可以套用的准则:一、存储变量时地址要求对齐,编译器在编译程...
  • yilese
  • yilese
  • 2017年07月27日 16:17
  • 120
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:结构体和类的字节对齐
举报原因:
原因补充:

(最多只允许输入30个字)