vc linux编译环境 | 您所在的位置:网站首页 › linux安装编译环境 › vc linux编译环境 |
结构体字节对齐 在C99标准中,对于内存对齐的细节没有作过多的描述,具体的实现交由编译器去处理,所以在不同的编译环境下,内存对齐可能略有不同,但是对齐的最基本原则是一致的,对于结构体的字节对齐主要有下面两点: 对于每个变量,它自身有对齐参数,这个自身对齐参数在不同编译环境下不同。下面列举的是两种最常见的编译环境下各种类型变量的自身对齐参数? 除了变量的自身对齐参数外,还有一个对齐参数,就是每个编译器默认的对齐参数#pragma pack(n),这个值可以通过代码去设定,如果没有设定,则取系统的默认值。 在linux(32)GCC下,n的取值只能为1、2、4,默认情况下为4。注意像DEV-CPP、MinGW等在windows下n的取值和VC的相同。 了解了这2个概念之后,可以理解上面2条原则了。 举个简单的例子,比如在结构体A中有变量int a,a的自身对齐参数为4(环境为windowsvc),而VC默认的对齐参数为8,取较小者,则对于a,它相对于结构体A的起始地址的偏移量必须是4的倍数。 87350 |
CopyRight 2018-2019 实验室设备网 版权所有 |