基础 - #pragma pack (n) 设置对齐方式
1 // pragma_pack.cpp : 定义控制台应用程序的入口点。 2 // 3 4 #include "stdafx.h" 5 #include <windows.h> 6 #include <iostream> 7 8 using namespace std; 9 10 11 12 /* 13 这是给编译器用的参数设置,有关结构体字节对齐方式设置, #pragma pack是指定数据在内存中的对齐方式。 14 15 #pragma pack (n) //C编译器将按照n个字节对齐。 16 #pragma pack () //取消自定义字节对齐方式。 17 18 19 #pragma pack (push,1) //把原来对齐方式设置压栈, 20 //并设新的对齐方式设置为一个字节对齐 21 22 #pragma pack(pop) //恢复对齐状态 23 24 因此可见,加入push和pop可以使对齐恢复到原来状态,而不是编译器默认,可以说后者更优,但是很多时候两者差别不大 25 26 如: 27 28 #pragma pack(push) //保存对齐状态 29 30 #pragma pack(4)//设定为4字节对齐 31 32 相当于 #pragma pack (push,4) 33 */ 34 35 //#pragma pack(1) 36 //调整结构体的边界对齐,让其以一个字节对齐 37 38 #pragma pack(push,1) 39 40 41 typedef struct _A_ 42 { 43 char a; 44 double b; 45 }A; 46 47 //#pragma pack() 48 49 #pragma pack(pop) 50 51 52 53 int main() 54 { 55 cout << sizeof(A) << endl; 56 57 return 0; 58 }
对齐时:
屏蔽代码时:
转载于:https://www.cnblogs.com/1228073191Blog/p/7452276.html
基础 - #pragma pack (n) 设置对齐方式相关推荐
- #pragma pack的作用
#pragma pack 当#pragma pack指定的值等于或者超过所有数据成员长度的时候,这个指定值的大小将不产生任何效果: 一句话: 如果是1的话表示紧凑存放,除了char,bool,每个都要 ...
- pragma pack(1) and #pragma pack(push,1)
作用:调整结构体的边界对齐,让其以一个字节对齐: #pragma pack(1) 使结构体按1字节方式对齐例如:struct sample{char a;double b;};若不用#pragma p ...
- 关于pragma pack的用法(一)
一个很重要的参数 #pragma pack(n) 数据边界对齐方式: 以如下结构为例: struct { char a; ...
- #pragma pack(push,1)与#pragma pack(1)的区别
这是给编译器用的参数设置,有关结构体字节对齐方式设置, #pragma pack是指定数据在内存中的对齐方式. #pragma pack (n) 作用:C编译器将按照n个字节对 ...
- #Pragma Pack(n)与内存分配 pragma pack(push,1)与#pragma pack(1)的区别
from:http://blog.csdn.net/mylinx/article/details/7007309 #pragma pack(n) 解释一: 每个特定平台上的编译器都有自己的默认&quo ...
- #pragma pack(push,1)与#pragma pack(1)的区别(转)
这是给编译器用的参数设置,有关结构体字节对齐方式设置, #pragma pack是指定数据在内存中的对齐方式. #pragma pack (n) 作用:C编译器将按照n个字节对 ...
- 【编译制导指令】#pragma pack - 字节数基准对齐
#pragma pack(1) struct {char c;int i; }S; int main() {cout<<sizeof(S)<<endl; } 那么,结果为: $ ...
- #pragma pack (n) 惹的祸
今天遇到了一个问题,使用数据流传输的数据在解析的时候数据错位.想了非常久,发现是#pragma pack (n)惹的祸. 首先.解析方使用了编译字节设置,可是在发送方没有使用,于是用相同的结构体解析数 ...
- #pragma pack 用法详解
#pragma pack 用法详解 pack为struct.union和class等的成员对齐指定字节边界,与编译选项(属性 -> 配置属性 -> C/C++ ->代码生成 -> ...
最新文章
- C博客作业01--分支、顺序结构
- 人人可以理解的区块链100问——比特币可以用于支付吗?
- Vimium插件让键盘党像操作Vim一样操作Chrome
- C# DES加密类,16位的加密。
- 计算机应用用英语,计算机应用常用英语:“windows”
- 详解:Salesforce元数据支撑SASS架构设计
- LWN:关于preempt_count()的四个小讨论!
- 自定义鼠标指针图案每次开机或者重启都会重置的解决办法
- www.ty66.php,韬轩阁
- 2012/5/9武汉佰钧成
- 网店卖什么产品最好卖?
- Word 在试图打开文件时遇到错误 文档可能已损坏 解决方法
- 考研后悔排行榜大盘点!这些雷要尽早避开!
- Leetcode501. Morris中序遍历
- ctf write cookies欺骗
- [info]关于「烧杯」这个APP
- Unity MegaFiers导入(pc2)格式缓存动画失败出现错误
- ORB-SLAM2源码笔记(1)——框架结构
- 完全 彻底 删除 百度云管家
- JS文件位置对浏览器的影响
热门文章
- fastjson 添加key value_Redis中设置了过期时间的Key,那么你还要知道些什么?
- 哪个厂家的监控平台用的云服务器_哪个品牌的云服务器最好用?
- project 模板_18个施工进度计划横道图模板,自动出图超方便,全部在这儿给你准好了...
- matlab2011实验3,matlab实验3探索.doc
- 华为的Java虚拟机_华为方舟编译器解析:提升安卓运行效率
- Android 机型适配之gradient默认渐变方向
- StratifiedShuffleSplit 交叉验证
- TCP/IP 详解卷一 - TCP CWR、ECE、URG、ACK、PSH、RST、SYN、FIN控制位
- 【teradata】强制解锁
- Python 中的 sys.argv 用法