读书笔记--struct的成员对齐
来源:互联网 发布:一级永久域名注册 编辑:程序博客网 时间:2024/05/07 06:30
先看一个程序:
#include<iostream>
using namespace std;
#pragma pack(8)
struct example1
{
short a;
long b;
};
struct example2
{
char c;
example1 struct exa1;
short e;
};
#pragma pack()
int main(void)
{
example2 struct exa2;
cout<< sizeof(struct example1)<<endl;
cout<< sizeof(struct example2)<<endl;
system("pause");
return 0;
}
结果为8 16
自然对界:
编译器会自动进行成员变量的对齐。缺省情况下(第一个成员的地址和整体结构的地址相同)。是指按结构体的成员中size最大的成员对齐。
struct naturalaign
{
char a;
short b;
char c;
};
size最大为short的2字节。故char成员a、c都以2位单位对齐,结果为6
若改为:
struct naturalaign
{
char a;
int b;
char c;
};
其结果为12
制定对界:
可以通过伪指令#paogma pack(n)来改变缺省的对界条件。编译器间按照n个字节对齐,使用伪指令#paogma pack( )来取消自定义字节对齐方式
注意:如果#paogma pack(n)中n大于结构体中最大成员的size,则不起作用,任按照size最大成员对界
#paogma pack(n)
struct naturalign
{
char a;
int b;
char c;
};
#paogma pack( )
当n为4,8,16时,对其方式均为一样为12。当n为2时,结果为8
- 读书笔记--struct的成员对齐
- struct的成员对齐
- struct的成员对齐
- struct的成员对齐
- struct的成员对齐
- struct的成员对齐
- struct的成员对齐
- struct的成员对齐
- vc struct的成员对齐
- struct 成员的对齐方式
- struct的成员对齐问题
- struct 成员的对齐方式
- struct 成员的对齐方式
- struct 成员的对齐方式
- struct成员的内存对齐问题:
- struct成员对齐小解
- struct成员对齐问题
- struct成员对齐
- 遭遇Trojan.DL.VBS.Agent.cex
- python调用cx_Oracle开发(-)---cx_Oracle安装
- excel报表
- Java学习笔记之Final(Static)变量
- 情诗佳句
- 读书笔记--struct的成员对齐
- 实实在在说多态
- 广告轮换代码
- Linux消息队列编程
- Hibernate一对多使用Map和Set的区别
- 取单选按钮radio的值
- Linux信号量PV操作
- javascript获取客户端网卡MAC地址和IP地址和计算机名
- [转]SQL Server和Oracle的常用函数对比