`
东边日出西边雨
  • 浏览: 262285 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

内存对齐

阅读更多

为什么会有内存对齐

 

        编译系统为了使程序运行的更快,将数据在内存中的存放结构制定了一定的规则,目的是使程序运行的更快,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

 

 

分享到:
评论

相关推荐

    内存对齐的问题 内存对齐内存对齐

    内存对齐,值得一读的内容, 内存对齐,值得一读的内容, 内存对齐,值得一读的内容, 内存对齐,值得一读的内容,

    内存对齐 详细介绍内存对齐的原理

    ### 内存对齐原理详解 #### 一、什么是内存对齐? 在计算机科学中,内存对齐(Memory Alignment)是指数据类型与内存地址之间的关系。简单来说,就是指数据结构(尤其是结构体中的成员)在内存中的起始地址应该...

    sizeof(结构体)和内存对齐

    sizeof(结构体)和内存对齐 sizeof(结构体)和内存对齐是C语言中一个重要的概念,它们之间存在着紧密的联系。sizeof(结构体)是指结构体在内存中的大小,而内存对齐是指编译器为了提高程序的效率和可移植性,对内存...

    C语言内存对齐,提高寻址效率

    C语言内存对齐的重要性 C语言内存对齐是指在编译器中对变量或结构体成员的存储地址进行调整,以提高寻址效率和存取效率。这是因为CPU在访问内存时,并不是可以访问任意编号的字节,而是以一定的步长来访问内存的。...

    计算机编程时使用到的内存对齐问题解答

    内存对齐是计算机编程中一个重要的概念,尤其是在优化程序性能和保证系统兼容性时不可或缺。内存对齐,简单来说,是指在计算机系统中,数据在内存中的存储位置必须按照特定的规则进行排列,以满足处理器的访问效率和...

    如何理解 struct 的内存对齐? - 知乎1

    内存对齐是计算机科学中关于数据结构存储的一种优化策略,主要应用于C++等低级编程语言。内存对齐的目标是确保数据在内存中的位置能够高效地被CPU访问,避免不必要的额外内存读取操作,提高程序运行速度。 在C++中...

    C中内存对齐

    在C语言中,内存对齐是一个重要的概念,它涉及到数据在计算机内存中的存储方式。内存对齐的主要目的是提高数据存取效率,减少CPU访问内存时的额外开销。当数据按照特定的规则排列在内存中,可以避免处理器进行不必要...

    内存对齐的规则以及作用 - 蜗牛小居 - C++博客1

    内存对齐是计算机科学中的一种优化技术,主要应用于编译器设计和编程语言实现中,目的是提高数据访问的效率和兼容性。它涉及到处理器架构、操作系统以及编程语言等多个层面。以下将详细介绍内存对齐的规则及其作用。...

    面试题1—内存对齐

    面试的时候内存对齐问的比较多,特从网上总结的面试题1.

    C++内存对齐

    ### C++内存对齐原理与实践 #### 一、引言 C++作为一种高效且功能强大的编程语言,在处理数据时需要特别关注内存管理问题。内存对齐是C++中的一个重要概念,它涉及到如何在内存中排列数据以提高程序的执行效率。...

    5分钟搞定内存字节对齐

    这个大小是经过内存对齐调整后的结果。那么,为什么需要内存对齐呢?内存对齐是为了提高程序的执行效率和可移植性。在不同的体系结构中,CPU 对不同类型的数据的处理速度是不同的。为了提高程序的执行效率,编译器会...

    C语言中的内存对齐:原理、实践与性能优化

    内存对齐是C语言中一个重要的概念,它影响着数据在内存中的存储方式和访问效率。通过深入理解内存对齐的原理和应用,程序员可以写出更高效、更可靠的代码,提高程序的性能和稳定性。在实际编程中,合理地利用内存...

    c++ 内存对齐的完整文档

    ### C++内存对齐原理与实践 #### 一、引言 在C++编程中,内存对齐(Memory Alignment)是一项重要的技术,它涉及到如何在内存中存储数据以提高程序的运行效率。良好的内存对齐不仅可以减少数据访问的时间,还可以...

    3.2VC内存对齐准则共6页.pdf.zip

    在IT行业中,内存对齐是程序设计中一个重要的概念,特别是在使用C++或者C这样的低级别编程语言时。本文将详细解析"3.2VC内存对齐准则",这一主题通常与微软的Visual C++(VC)编译器相关,因为不同的编译器可能有...

    商业编程-源码-关于内存对齐.zip

    内存对齐是计算机科学中的一个重要概念,特别是在编程和系统设计中。它涉及到如何在内存中有效地安排数据结构,以优化性能、确保正确性并利用硬件特性。在这个“商业编程-源码-关于内存对齐.zip”文件中,我们很可能...

    结构体内存对齐.doc

    结构体内存对齐是计算机科学中关于数据结构在内存中存储的一种优化策略,主要涉及到C语言编程。内存对齐的目的是为了提高数据存取效率和兼容性,同时也与处理器架构和编译器有关。在C语言中,结构体的内存布局并不...

    内存对齐问题的完美解释.doc

    内存对齐是计算机科学中关于数据存储的一种策略,它的目的是优化数据访问速度并节省内存空间。在C语言中,`sizeof`操作符用于获取数据类型或变量所占用的内存大小。在描述的文档中,主要讨论了内存对齐在结构体`...

Global site tag (gtag.js) - Google Analytics