再谈结构体的大小

      今天上班时,在与同事讨论数据字节对齐时,在谈到如果结构体中单独包含一个bool类型的成员时,这个结构体的大小是多少?那时第一直觉就是,虽然bool类型的大小是1个字节,但编译器默认按4个字节对,所以单独包含一个bool类型,结构体大小应该是4个字节。后来同事亲手试验了一下,想不到竟然是1个字节大小。

     因些自己就亲手写个几个结构体进行试验,以下是在VS2003进行默认编译的,列举如下:

1.  

struct TEST

  {

     bool  bMember1;

  }

结果: sizeof(TEST) =  1;

 

2.  

struct TEST

  {

     bool  bMember1;

     int    nMember2;

  }

结果: sizeof(TEST) =  8;

3.

struct TEST

  {

     bool  bMember1;

     int    nMember2;

     bool  bMember3;

  }

结果: sizeof(TEST) =  12;

4.

struct TEST

  {

     bool  bMember1;

     bool  bMember3;

     int    nMember2;

     

  }

结果: sizeof(TEST) =  8;

5.

struct TEST

  {

     int    nMember2;

     bool  bMember1;

     bool  bMember3;

     

  }

结果: sizeof(TEST) =  8;

6.

struct TEST

  {

      bool  bMember1;

     WORD    wMember2;

     bool  bMember3;

  }

结果: sizeof(TEST) =  6;

 

7.

struct TEST

  {

     WORD    wMember2;

     bool  bMember3;

     bool  bMember1;

  }

结果: sizeof(TEST) =  4;

8.

struct TEST

  {

     bool  bMember3;

     bool  bMember1;

     WORD    wMember2;

    

  }

结果: sizeof(TEST) =  4;

9.

struct TEST

  {

     bool  bMember3;

     bool  bMember1;

     __int64  n64Member2;

    

  }

结果: sizeof(TEST) =  16;

10.

struct TEST

  {

      bool  bMember3;

      __int64  n64Member2;

      bool  bMember1;

    

  }

结果: sizeof(TEST) =  24;

11.

struct TEST

  {

     

      __int64  n64Member2;

      bool  bMember1;

     bool  bMember3;    

  }

结果: sizeof(TEST) =  16;

12.

struct TEST

  {

     

     bool  bMember1;

     WORD wMember4;

     bool  bMember3;

     int nMember5;

      __int64  n64Member2;

          

  }

结果: sizeof(TEST) =  24;

 

由上可见 结构体或者类的自身对齐值是其成员中自身对齐值最大的那个值。
本文最后附带关于字节对齐网上一篇写得不错的文章:

http://www.yuanma.org/data/2006/0723/article_1213.htm

转载于:https://www.cnblogs.com/kundij/archive/2010/08/16/1800994.html

内容概要:本文系统介绍了算术优化算法(AOA)的基本原理、核心思想及Python实现方法,并通过图像分割的实际案例展示了其应用价值。AOA是一种基于种群的元启发式算法,其核心思想来源于四则运算,利用乘除运算进行全局勘探,加减运算进行局部开发,通过数学优化器加速函数(MOA)和数学优化概率(MOP)动态控制搜索过程,在全局探索与局部开发之间实现平衡。文章详细解析了算法的初始化、勘探与开发阶段的更新策略,并提供了完整的Python代码实现,结合Rastrigin函数进行测试验证。进一步地,以Flask框架搭建前后端分离系统,将AOA应用于图像分割任务,展示了其在实际工程中的可行性与高效性。最后,通过收敛速度、寻优精度等指标评估算法性能,并提出自适应参数调整、模型优化和并行计算等改进策略。; 适合人群:具备一定Python编程基础和优化算法基础知识的高校学生、科研人员及工程技术人员,尤其适合从事人工智能、图像处理、智能优化等领域的从业者;; 使用场景及目标:①理解元启发式算法的设计思想与实现机制;②掌握AOA在函数优化、图像分割等实际问题中的建模与求解方法;③学习如何将优化算法集成到Web系统中实现工程化应用;④为算法性能评估与改进提供实践参考; 阅读建议:建议读者结合代码逐行调试,深入理解算法流程中MOA与MOP的作用机制,尝试在不同测试函数上运行算法以观察性能差异,并可进一步扩展图像分割模块,引入更复杂的预处理或后处理技术以提升分割效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值