`
badboywang
  • 浏览: 64730 次
  • 性别: Icon_minigender_1
  • 来自: 珠海
社区版块
存档分类
最新评论

结构体内存长度的对齐

    博客分类:
  • vc++
阅读更多
#include<iostream.h> 
struct T { 
int w; 
union T2 { char c; int i; double d; } U; 
}; 
int main() 
{ 
cout<<sizeof(int)<<", "<<sizeof(double)<<endl; 
cout<<sizeof(T)<<endl; 
return 0;
} 

缺省的大部分是以“自然对齐要求最严格”的数据的“自然对齐要求”,可以用

#pragma pack (2) /*指定按2字节对齐*/ 

里面的参数设置为1就是1个字节对齐了

#pragma pack () /*取消指定对齐,恢复缺省对齐*/ 

 

分享到:
评论

相关推荐

    数据结构内存地址对齐方法

    否则,如果结构体内的元素的长度都小于处理器的倍数的时候,便以结构体里面最长的数据元素为对齐单位。 通过对齐规则的分析和实践,我们可以更好地理解编译器如何分配结构体的内存,并且可以更好地设计和优化数据...

    C结构体对齐详解(结构体成员对齐)

    2. 结构体内各数据成员的内存对齐,即该数据成员相对结构体的起始位置 结构体大小的计算方法和步骤: 1. 将结构体内所有数据成员的长度值相加,记为 sum_a。 2. 将各数据成员为了内存对齐,按各自对齐模数而填充的...

    字节对齐小结

    如果一个变量没有按照其长度对齐,CPU在读取时可能需要进行多次内存访问,这会降低性能。在某些系统中,如SPARC,未对齐的数据访问甚至会导致错误。另一方面,通过适当的对齐,可以减少不必要的内存间隙,节省存储...

    vc结构体数组长度计算

    本文将围绕“vc结构体数组长度计算”这一主题展开讨论,具体分析VC++编译器在处理结构体内存对齐时的行为以及如何计算结构体的大小。 #### 结构体内存对齐 在C++中,结构体是一种用户自定义的数据类型,可以包含...

    深入内存对齐的详解

    如果结构体中有成员的长度大于n,则按照最大成员的长度来对齐。__attribute__ ((packed))可以取消结构体在编译过程中的优化对齐,按照实际占用字节数进行对齐。 五、结构体内成员如何找出自己的位置 结构体内成员...

    C语言程序设计(第2版)-2期 经验技巧8-1 结构体变量的存储长度.pdf

    对于`test2`,`t1`被视为一个整体,对齐数为4(结构体内的最大成员`int i`的大小),因此`test2`的大小是20字节(4+12+4)。 至于空结构体,Visual C++中分配1字节大小,以便为变量提供一个地址,而GCC中则认为其...

    C代码优化方案1、选择合适的算法和数据结构__ 4 2、使用尽量小的数据类型__ 5

    - **把结构体填充成最长类型长度的整倍数**:通过填充结构体的尾部使其总长度成为最长成员类型的整数倍,以消除内存对齐问题带来的额外开销。 - **示例**:如果结构体中最长的成员是`double`(8字节),那么...

    武纺16年-C语言A卷1

    15. 共用体内存占用:定义一个共用体变量,如果包含字符型(1字节)、整型(通常4字节)和浮点型(通常4字节),其占用内存长度至少为4个字节,因为内存分配通常以字节对齐。 【单项选择题知识点】 1. 合法的...

    详解C语言Struct(结构体)系列之一

    在C99标准中,结构体内可以声明函数,这些函数的作用域限制在结构体内,相当于其他语言中的方法。此外,结构体还可以包含函数指针,这样的设计允许更灵活的数据和行为的组合。 五、空间换时间:结构体中成员变量的...

    高质量C编程指南

    在操作符两侧添加空格,以及对齐复杂的语句结构,可以使代码更加清晰易读。例如,在赋值语句中,等号两边各有一个空格,可以突出显示操作符,使代码层次分明。 #### 长行拆分 当一行代码过长时,应合理拆分为多行,...

    Python知识点整理.docx

    9. **循环控制与条件中断**:在循环体内,如果满足特定条件,可以使用`break`立即退出循环,而`continue`则跳过当前循环迭代,进入下一次迭代。 这些是Python编程的基础知识点,掌握它们对于初学者来说至关重要。...

    Java 编程规范CheckList

    - 函数、过程、循环、判断等结构体内的代码需遵循缩进规则。 - 这种规范能够清晰地展示代码层次结构。 10. **分界符格式**: - 大括号`{}`需各占一行,并与引用它们的语句左对齐。 - 这样做的目的是让代码结构...

    C++常见面试题

    当结构体内的元素长度小于处理器位数时,结构体将根据最长元素进行对齐。在这个例子中,`char a`按1字节对齐,`int b`按4字节对齐。由于`int`通常占用4字节,因此结构体`s`的总大小是8字节,满足了4字节的对齐要求...

    机械设计标准件及常用件的画法.pptx

    - 旋合部分按外螺纹画,其余部分按各自规定画,确保大径线对齐,小径线对齐。 - 旋入深度的表示和画图步骤也进行了详细说明。 6. **螺纹的标注**: - 标注包括螺纹代号、公称直径、螺距(导程/线数)、旋向、...

    经典企业面试题整理(C语言)

    - **主要区别**:`while`循环会在执行之前检查条件是否成立,而`do-while`循环会首先执行一次循环体内的代码,之后才检查条件。这意味着即使条件一开始就不成立,`do-while`循环也会至少执行一次。 #### `continue`...

    面向过程的代码优化技术

    - **把结构体填充成最长类型长度的整倍数**:为了内存对齐,结构体大小通常会被填充到最大成员的字节长度的整数倍,提前进行填充可以减少内存浪费。 - **按数据类型的长度排序本地变量**:类似地,本地变量也可以...

    让C程序更高效的10种方法

    优化循环结构,如减少循环次数、合并循环体内的操作,甚至使用向量化技术(如SIMD指令)加速计算密集型任务。 10. **使用编译器优化选项**: 现代编译器提供了各种优化级别,如-O2或-O3,可以自动优化代码。然而,...

Global site tag (gtag.js) - Google Analytics