zoukankan      html  css  js  c++  java
  • C++ 类类型占用内存大小一题

    1、问题描述

    求解下面程序结果

    #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;
    
    }

    2、在linux 下QT及 g++编译后执行结果

    $ ./tt
    4
    8
    8
    12
    20

    在XP下Qt编译后执行结果

    4
    8
    8
    12
    24

    3、析

    1)sizeof 只计算栈中分配的大小,  不计算全局数据区中分配的大小。静态变量存放在全局数据区。

    2)类类型占用内存大小是所有成员变量大小之和且满足数据对齐规则。

    3)linux 下与 windows 下执行结果不同,推测是 linux下以4字节为整数倍进行对齐,xp 下是以最大占用内存的变量为整数倍进行对齐。

  • 相关阅读:
    Nhibernate1
    控制反转(IoC)
    Windbg是windows平台上强大的调试器
    Java 7 语法新特性
    区间数据计算
    红黑树数据结构剖析
    .net下灰度模式图像
    如何配置Hyper-V的虚拟机通过主机网络上网 (NAT)
    产品落地
    poj-3898 Software Industry Revolution DP
  • 原文地址:https://www.cnblogs.com/aqing1987/p/4195166.html
Copyright © 2011-2022 走看看