#pragma pack()相关问题
2017-08-31 22:00
232 查看
#pragma pack(n) //按n字节对齐,但实际上是:取结构体中单个成员的最大占用字节数和n两者的最小值。
例如:
#pragma pack(8)
struct aa
{
int a;
int v;
char c;
short w;
}; 对齐数取得是 min(sizeof(int),8) 即为 4。
即求sizeof(aa)为12 ,并不是16。 ---》a(占4字节)+v(占4字节)+c(占1字节)+w(占2字节)==>12字节( c和d共占3字节,要补一个字节)
再如这道:
#pragma pack(8)
struct Two
{
char c;
double d;
int i;
} ; 对齐数取得是 min(sizeof(double),8) 即为8。
即求sizeof(Two)为24。 --》c(占1字节)+d(占8字节)+i(占4字节)===>24字节(c补7字节,i补4字节)
例如:
#pragma pack(8)
struct aa
{
int a;
int v;
char c;
short w;
}; 对齐数取得是 min(sizeof(int),8) 即为 4。
即求sizeof(aa)为12 ,并不是16。 ---》a(占4字节)+v(占4字节)+c(占1字节)+w(占2字节)==>12字节( c和d共占3字节,要补一个字节)
再如这道:
#pragma pack(8)
struct Two
{
char c;
double d;
int i;
} ; 对齐数取得是 min(sizeof(double),8) 即为8。
即求sizeof(Two)为24。 --》c(占1字节)+d(占8字节)+i(占4字节)===>24字节(c补7字节,i补4字节)
相关文章推荐
- 位域,pragma pack(n)相关
- struct的字节对齐问题(通过pragma pack(n)改变字节对齐的例子)
- 关于pragma pack的用法C++中的内存对齐问题
- 关于#pragma pack(n)引发的一系列问题
- 在vue中用webpack打包之后运行文件问题以及相关配置
- 关于sizeof与#pragma pack导致结构体大小变化的问题
- struct的字节对齐问题(通过pragma pack(n)改变字节对齐的例子)
- pragma pack(n)与内存对其问题
- 关于pragma pack的用法 C++中的内存对齐问题
- #pragma pack(n)------内存对齐问题
- 关于pragma pack的用法--------------C 中的内存对齐问题(转载)
- #pragma pack() 引发的问题
- webpack相关问题记录
- #pragma pack和数据对齐问题
- #pragma once 与#ifndef,#define,#endif的差别 、重复定义等相关问题
- 关于#pragma pack()字节对齐问题
- 关于pragma pack的用法(四) C++中的内存对齐问题
- vxwork的奇怪问题 warning: malformed `#pragma pack'
- 浅谈在vue中用webpack打包之后运行文件的问题以及相关配置方法
- 关于pragma pack的用法--------------C++中的内存对齐问题