zoukankan      html  css  js  c++  java
  • sizeof计算栈中分配的大小

    #include<iostream>

    using namespace std;

    class A1

    {

    public:

    int a;

    static int b;

    A1();

    ~A1();

    };

    class A2{

    public :

    int a;

    char c;

    A2();

    ~A2();

    };

    class A3{

    public:

    float a;

    char c;

    A3();

    ~A3();

    };

    class A4

    {

    public:

    float a;

    int b;

    char c;

    A4();

    ~A4();

    };

    class A5{

    public:

    double d;

    float a;

    int b;

    char c;

    A5();

    ~A5();

    };

    int main()

    {

    cout<<sizeof(A1)<<endl;

    cout<<sizeof(A2)<<endl;

    cout<<sizeof(A3)<<endl;

    cout<<sizeof(A4)<<endl;

    cout<<sizeof(A5)<<endl;

    return 0;

    }

    答案:4,8,8,12,24

    静态变量是存放在全局数据区的,而sizeof计算栈中分配的大小,是不会计算在内的。

    字节对齐是编译时决定的,一旦决定则不会再改变,因为即使有对齐的因素在,也不会出现一个结构在运行时尺寸发生变化的情况。

    在本题中,A1的数据对齐是下面的情况:

    |-------int--------|     4B

    A2的数据对齐是下面的情况:

    |--------int--------|   4B

    |char|----|----|----|   1B+3B

    A3的数据对齐是下面的情况:

    |--------float-------|    4B

    |char|----|----|----|     1B+3B

    A4的数据对齐是下面的情况:

    |-------float-------|       4B

    |-------int---------|       4B

    |char|----|----|----|      1B+3B

    A5的数据对齐是下面的情况:

    |---------------double----------------|     8B

    |-------float-------|--------int--------|    4B+4B

    |char|----|----|----|----|----|----|----|    1B+7B

  • 相关阅读:
    做题经验
    4906 删数问题
    1225 八数码难题
    1005 生日礼物
    1004 四子连棋 未完成
    1008 选数 2002年NOIP全国联赛普及组
    1068 乌龟棋 2010年NOIP全国联赛提高组
    2292 图灵机游戏
    实战数据结构(9)_单链表实现多项式的相乘
    最近招两个兼职的活(PHP和JSP)
  • 原文地址:https://www.cnblogs.com/yanglf/p/2752641.html
Copyright © 2011-2022 走看看