这个问题困扰许久,查了许多资料,网上众说纷纭,整理如下:
一.内存对齐的初步讲解
内存对齐可以用一句话来概括:
“数据项只能存储在地址是数据项大小的整数倍的内存位置上(分别为偶地址、被4整除的地址、被8整除的地址
)”
例如int类型占用4个字节,地址只能在0,4,8等位置上。
例1:
#include
struct xx{
char b;...
分类:
其他好文 时间:
2015-03-14 13:58:08
阅读次数:
129
http://blog.csdn.net/hbuxiaofei/article/details/9491953当你看到这个标题,仍想往下读的时候说明你已经开始关注数据在内存存储问题了。好吧,下面先想一个问题:struct stu{char sex;int length;char name[10];}...
分类:
其他好文 时间:
2015-03-12 18:57:33
阅读次数:
191
#include 里面定义了如下宏#define _INTSIZEOF(n) ( (sizeof(n) + sizeof(int) - 1) & ~(sizeof(int) - 1) )主要作用是用于将变量n按照int大小内存地址对齐,返回内存对齐后n的大小(一般>=sizeof(n))公式的计算....
分类:
其他好文 时间:
2015-03-12 18:41:09
阅读次数:
152
有时会在c/c++中看到这种形式#pragma pack(n)
#pragma pack()前一句代表设置对齐的字节数为n,而不是编译器默认的对齐字节数(ubuntu 14.04 x86_64下为8),后一句代表恢复默认值,合理地使用内存对齐能减少程序占用的内存空间,使用不当也会降低存取效率从而降低程序性能。在分析内存对齐时,只需要采用以下的原则,这里以一段代码简单解释下#include <stdi...
分类:
其他好文 时间:
2015-03-09 16:14:20
阅读次数:
124
http://blog.csdn.net/xing_hao/article/details/6678048一。内存对齐许多计算机系统对基本类型数据在内存中存放的位置有限制,它们会要求这些数据的首地址的值是某个数k(通常它为4或8)的倍数,这就是所谓的内存对齐,而这个k则被称为该数据类型的对齐模数(a...
分类:
编程语言 时间:
2015-03-04 20:56:38
阅读次数:
187
一、为什么需要内存对齐? 无论做什么事情,我都习惯性的问自己:为什么我要去做这件事情? 是啊,这可能也是个大家都会去想的问题, 因为我们都不能稀里糊涂的或者。那为什么需要内存对齐呢?这要从cpu的内存访问机制说起. 为了了解清楚cpu的内存访问机制,昨天整晚都在查找资料,但是还是找不到很好的介绍资料...
分类:
其他好文 时间:
2015-02-14 18:52:28
阅读次数:
154
对齐规则如下:1、 结构体的大小等于结构体内最大成员大小的整数倍2、 结构体内的成员的首地址相对于结构体首地址的偏移量是其类型大小的整数倍,比如说double型成员相对于结构体的首地址的地址偏移量应该是8的倍数。3、 为了满足规则1和2编译器会在结构体成员之后进行字节填充!注:1. 内存对齐只是一....
分类:
其他好文 时间:
2015-02-12 12:04:35
阅读次数:
108
当你看到这个标题,仍想往下读的时候说明你已经开始关注数据在内存存储问题了。 好吧,下面先想一个问题: struct stu{
char sex;
int length;
char name[10];
}; 如果你的答案是:15 。那你该仔细看看下面的分析了!!!!
一个字节有8位,每个位都是0/1代...
分类:
其他好文 时间:
2015-02-09 22:47:34
阅读次数:
188
关于内存对齐一:1.什么是内存对齐假设我们同时声明两个变量:char a;short b;用&(取地址符号)观察变量a,b的地址的话,我们会发现(以16位CPU为例):如果a的地址是0x0000,那么b的地址将会是0x0002或者是0x0004。那么就出现这样一个问题:0x0001这个地址没有被使用...
分类:
其他好文 时间:
2015-02-09 21:33:36
阅读次数:
173
操作系统的内存分配问题与内存对齐问题对于地层程序设计来说是非常重要的,对内存分配的理解直接影响到代码质量、正确率、效率以及程序员对内存使用情况、溢出、泄露等的判断力。而内存对齐是常常被忽略的问题,理解内存对齐原理及方法则有助于帮助程序员判断访问非法内存。一般c/c++程序占用的内存主要分为以下五种:
1.栈区(stack):系统自动分配,由程序自动创建、自动释放。函数参数、局部变...
分类:
编程语言 时间:
2015-02-09 09:32:36
阅读次数:
241