为什么会有内存对齐
:
编译系统为了使程序运行的更快,将数据在内存中的存放结构制定了一定的规则,目的是使程序运行的更快,CPU取数据更方便,但同时也浪费了一定的内存空间,这就是牺牲空间来换取时间!
对齐的规则
:
盒子规则
:最宽数据类型的宽度不超过4字节时,盒子宽度等于最宽数据类型宽度。
最宽数据类型的宽度超过4字节时,盒子宽度为4字节(32位系统下)。
各个数据类型按顺序存放到盒子中,盒子的体积就是占用的内存大小啦!
| <---------宽---------->|
+ ------------------------+
行1
|
bool | ---- | ---- | ---- |
行2
|
----------- int ----------|
行3
|
bool | ---- | ---- | ---- |
4字节*3=12字节
看几个例子把
:
struct {
short a1;
short a2;
short a3;
} A;
struct {
long a1;
short a2;
} B;
class C
{
private:
bool a1;
int a2;
bool a3;
};
class D
{
private:
int a2;
bool a1;
bool a3;
};
class E
{
public:
int a;
static int b;
E();
~E();
};
class F
{
public:
int a;
char b;
F();
~F();
};
class G
{
public:
float a;
char c;
G();
~G();
};
class H
{
public:
float a;
int b;
char c;
H();
~H();
};
class I
{
public:
double a;
float b;
int c;
char d;
I();
~I();
};
sizeof(A), sizeof(B), sizeof(C) ... ... 分别是多少?
答案: A B C D E F G H I
6 8 12 8 4 8 8 12 20
分享到:
相关推荐
内存对齐,值得一读的内容, 内存对齐,值得一读的内容, 内存对齐,值得一读的内容, 内存对齐,值得一读的内容,
关于内存对齐的很详细的解析.内容有什么是内存对齐,为什么需要内存对齐,编译器对内存对齐的处理,栈内存对齐等,并附有验证代码.值得一看.
面试的时候内存对齐问的比较多,特从网上总结的面试题1.
sizeof(结构体)和内存对齐 sizeof(结构体)和内存对齐 sizeof(结构体)和内存对齐 sizeof(结构体)和内存对齐
c语言内存对齐问题的描述,数据在计算机内存中的存储
1. re: 内存对齐的规则以及作 2. re: 内存对齐的规则以及作 3. re: 内存对齐的规则以及作 4. re: 内存对齐的规则以及作 5. re: 内
本资源附有本人精心设计的内存对齐PPT以及示例程序,保证您看完本资源后完全掌握内存对齐问题。
详细解读内存对齐原则,通过实例让你完全掌握内存对齐。
C++内存对齐是个看似简单,但大家经常容易犯错的地方,本文详细总结了C++内存对齐,尤其是结构体对齐方面的知识,提出了自己理论总结,希望能对读者有参考价值!
该文档提供了详细解决结构体sizeof问题,从结构体内变量所占空间大小,默认内存对齐大小,强制内存对齐方法,变量在内存中布局的详细分析,语言言简意赅,绝无废话,为读者解决了大量寻找书籍的烦恼,读者可以花费几分钟的...
关于结构体的内存对齐关于结构体的内存对齐关于结构体的内存对齐
c++ 内存对齐的完整文档 c++ 内存对齐的完整文档 c++ 内存对齐的完整文档
介绍C/C++中内存对齐(字节对齐)的概念以及对齐规则。通过示例代码和图示帮助理解。
内存对齐问题,主要介绍了C语言结构体重内存对齐的问题。
内存对齐,memory alignment.为了提高程序的性能,数据结构(尤其是栈)应该尽可能地在自然边界上对齐。原因在于,为了访问未对齐的内存,处理器需要作两次内存访问;然而,对齐的内存访问仅需要一次访问。内存对齐...
详细介绍了c++内存对齐的原因,内存是怎么对齐的
C++ 内存对齐原则及作用 C++ 内存对齐原则及作用 C++ 内存对齐原则及作用
枚举窗口,内存对齐,自己实现atoi
适合初学指针的C语言学生