内存对齐 align
/*
地址对齐:指的是存放数据的首地址%N==0,而且整个结构体的大小%M(结构体的有效对齐值)==0
1 数据类型的自身对齐值:char:1 short:2 int,flolat,double:4
2 结构体或类的自身对齐值:成员中自身对齐值中的最大值
3 数据成员、结构体和类的有效对齐值:自身对齐值和指定对齐值中小的那个值
*/
//取消缺省对齐,设置指定对齐N
#pragma pack(N)
...
...
...
#pragma pack()
//GNU设置指定对齐
#define ALIGN(N) __attribute__((aligned(N)))
#pragma pack(1)
struct sa
{
char x1;
short x2;
int x4;
};
#pragma pack()
//sizeof(struct sa)=7
struct sb
{
char x1;
short x2;
int x4;
}ALIGN(4);
//sizeof(struct sb)==8
内存对齐 align的更多相关文章
- 【转载】【内存对齐(二)】__declspec( align(#) )的用法和大小计算
转自:http://www.cppblog.com/deercoder/archive/2011/03/13/141747.html 感谢作者! 在上面讲到了关于pack的内存对齐和计算方法,这里继续 ...
- Windows+GCC下内存对齐的常见问题
结构/类对齐的声明方式 gcc和windows对于modifier/attribute的支持其实是差不多的.比如在gcc的例子中,内存对齐要写成: class X { //... } __attrib ...
- 2的m次方 内存对齐
在存储的时候,为了提高效率,一般都会让偏移量落在2的m次方的位置上,而且常有向上取整和向下取整两种需求.向下取整PALIGN_DOWN(x,align) (x & (- align)) 这样 ...
- VC++平台上的内存对齐操作
我们知道当内存的边界正好对齐在相应机器字长边界上时,CPU的执行效率最高,为了保证效率,在VC++平台上内存对齐都是默认打开的,在32位机器上内存对齐的边界为4字节:比如看如下的代码: struct ...
- vs2012 函数参数内存对齐引发编译错误
编译一个游戏库时,遇到个奇怪的问题.一个模板函数,形参是按值传入的.编译时实参是内存对齐过的,无法通过,引发类似下面的错误: error C2719: '_Val': formal parameter ...
- NumPy-快速处理数据--ndarray对象--多维数组的存取、结构体数组存取、内存对齐、Numpy内存结构
本文摘自<用Python做科学计算>,版权归原作者所有. 上一篇讲到:NumPy-快速处理数据--ndarray对象--数组的创建和存取 接下来接着介绍多维数组的存取.结构体数组存取.内存 ...
- c/c++中内存对齐完全理解
一,什么是内存对齐?内存对齐用来做什么? 所谓内存对齐,是为了让内存存取更有效率而采用的一种编译阶段优化内存存取的手段. 比如对于int x;(这里假设sizeof(int)==4),因为cpu对内存 ...
- C/C++的内存对齐
1.内存对齐之pragma pack语法 语法:#pragma pack( [show] | [push | pop] [, identifier], n )作用:指定结构,联合和类的包对齐方式(pa ...
- 关于C++内存对齐
关于C++内存对齐 C++11从标准层面引入了一些和内存对齐相关的特性,标准库也增加了对应的组件,这里稍微总结一下. 取得某个类型的对齐值 C++中的Object(对象)是指一块满足以下条件的内存区域 ...
随机推荐
- cocosCreator定制小游戏构建模板
cocosCreator定制小游戏构建模板 1. 解决痛点 在开发微信小游戏过程中,需要在微信小游戏game.json加入一个配置键navigateToMiniProgramAppIdList,但常规 ...
- ComplexBrowser: a tool for identification and quantification of protein complexes in large-scale proteomics datasets(大规模蛋白组学数据集中鉴定和定量蛋白复合物)
文献名:ComplexBrowser: a tool for identification and quantification of protein complexes in large-scale ...
- [Docker4] Docker-machine进行多docker host管理
Docker Machine Docker machine就是自动化安装docker daemon Docker machine的provider docker machine provider 常见 ...
- [ex-kmp] HDU 2019 Multi-University Training Contest 5-string matching
string matching Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others ...
- 【深度强化学习】Curriculum-guided Hindsight Experience Replay读后感
目录 导读 目录 正文 Abstract[摘要] Introduction[介绍] 导读 看任何一个领域的文章,一定要看第一手资料.学习他们的思考方式,论述逻辑,得出一点自己的感悟.因此,通过阅读pa ...
- Mysql性能优化:为什么你的count(*)这么慢?
导读 在开发中一定会用到统计一张表的行数,比如一个交易系统,老板会让你每天生成一个报表,这些统计信息少不了 sql 中的count函数. 但是随着记录越来越多,查询的速度会越来越慢,为什么会这样呢?M ...
- Matlab 编程简介与实例
函数作图 二维平面曲线作图函数 plot(x, y, 's') x, y是长度相同的向量,s表示线型和颜色 如果作多条曲线在同一图上,则用函数: plot(x1, y1, 's1', x2, y2, ...
- iOS sign in with Apple 苹果ID登录
http://www.cocoachina.com/articles/109104?filter=ios https://juejin.im/post/5deefc5e518825126416611d ...
- DEV Chart控件鼠标选中某条曲线
this.Chart.ObjectSelected += new DevExpress.XtraCharts.HotTrackEventHandler(this.Chart_ObjectSelecte ...
- Maximum splitting
Maximum splitting You are given several queries. In the i-th query you are given a single positive i ...