您的位置:首页 > 编程语言 > C语言/C++

C++ 类类型占用内存大小一题

2014-12-31 10:26 141 查看
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 下是以最大占用内存的变量为整数倍进行对齐。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: