原文:Code Tips: gcc对结构体的默认字节“对齐”方式

. 发现问题 最近在编写代码过程中发现,对一个结构体进行 sizeof 操作时,有时候大小是填充过的,有时候又没有填充。 那么,如果在代码中没有显示的指定要求编译器进行对齐时,gcc的默认处理是怎样的呢 . 先说结论 代码中如果没有显示指定字节对齐时,gcc默认并没有进行cpu宽度字节对齐 gcc会将结构体的大小填充为结构体最大成员的整数倍 如果结构体中的成员也是一个结构体,则查看这个成员的成员 ...

2020-12-17 14:40 0 753 推荐指数:

查看详情

结构字节对齐方式

内存对齐规则 变量(结构变量)的起始地址能够被其对齐值整除,结构变量的对齐值为最宽的成员大小 结构每个成员相对于起始地址的偏移能够被其自身对齐值整除,如果不能则在前一个成员后面补充字节 结构体总体大小能够被最宽的成员的大小整除,如不能则在后面补充字节 此外还有编译器 ...

Tue May 15 06:01:00 CST 2018 0 4604
结构字节对齐

结构字节对齐 在用sizeof运算符求算某结构所占空间时,并不是简单地将结构中所有元素各自占的空间相加,这里涉及到内存字节对齐的问题。从理论上讲,对于任何 变量的访问 ...

Thu Mar 08 23:25:00 CST 2012 6 27922
结构字节对齐

结构字节对齐 在用sizeof运算符求算某结构所占空间时,并不是简单地将结构中所有元素各自占的空间相加,这里涉及到内存字节对齐的问题。从理论上讲,对于任何 变量的访问都可以从任何地址开始访问,但是事实上不是如此,实际上访问特定类型的变量只能在特定的地址访问,这就需要各个变量 ...

Tue Dec 11 16:57:00 CST 2012 4 1719
结构字节对齐

在用sizeof运算符求算某结构所占空间时,并不是简单地将结构中所有元素各自占的空间相加,这里涉及到内存字节对齐的问题。从理论上讲,对 于任何 变量的访问都可以从任何地址开始访问,但是事实上不是如此,实际上访问特定类型的变量只能在特定的地址访问,这就需要各个变量在空间上按一定的规则排列 ...

Wed Dec 30 17:56:00 CST 2015 0 3535
结构字节对齐规则

的那个。 对齐有两个规则: 1、不但结构的成员有有效对齐值,结构本身也有对齐值,这主要是考虑结构的数 ...

Thu Aug 30 03:24:00 CST 2018 2 17859
struct结构字节长度,字节对齐

1 unsigned short 等基本数据类型的字节大小 整型数据即整数。整型数据的一般分类如下: 基本型:类型说明符为int,在内存中占4个字节。 短整型:类型说明符为short int或short。所占字节和取值范围均与基本型相同。 长整型:类型说明符为long int ...

Tue Apr 27 18:50:00 CST 2021 0 228
C语言结构字节对齐原则

字节为什么要对齐?现代计算机中内存空间都是按照byte划分的,从理论上讲似乎对任何类型的变量的访问可以从任何地址开始,但实际情况是在访问特定类型变量的时候经常在特 定的内存地址访问,这就需要各种类型数据按照一定的规则在空间上排列,而不是顺序的一个接一个的排放,这就是对齐。 一.对齐的作用和原因 ...

Wed Aug 01 06:21:00 CST 2012 0 3509
C/C++取消结构字节对齐

对齐是个比较难理解的问题,如果弄懂了一段时间后可能又忘了,不如直接取消对齐,相关配置代码如下: #pragma pack (n) // 编译器将按照n个字节对齐;#pragma pack() // 恢复先前的pack设置,取消设置的字节对齐方式#pragma pack(pop)// 恢复先前 ...

Tue Feb 18 07:44:00 CST 2020 0 1525
 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM