其实我们知道内存中是以对齐方式存储的,只是我们往往定义一个类的时候对于其中的成员变量很随意的就写上,当然这对程序(类的)实现功能没什么影响,但这确实会对内存产生不必要的浪费
cat class.cpp
#include <iostream>
using namespace std;
class a
{
public:
char c1;
char c2;
char c3;
int i1;
char c4;
};
class b
{
public:
char c1;
int i1;
char c2;
char c3;
char c4;
};
class c
{
public:
int i1;
char c1;
char c2;
char c3;
char c4;
};
class d
{
public:
char c1;
char c2;
char c3;
char c4;
int i1;
};
int main(int argc, char** argv){
printf("a:%d\tb:%d\tc:%d\td:%d\n", sizeof(a), sizeof(b), sizeof(c), sizeof(d) );
return 0;
}
./class
a:12 b:12 c:8 d:8
可以看到不同的次序会占用不同空间大小的内存,所以在使用class等时请花分秒钟想一想怎样排序成员。。。。。。。。。。

本文探讨了C/C++中类的成员变量排列对内存对齐的影响。通过示例展示了不同排列顺序导致的内存占用差异,强调在声明类时应考虑优化内存布局以减少不必要的浪费。
最低0.47元/天 解锁文章
1911

被折叠的 条评论
为什么被折叠?



