问题描述
- C++内存问题,主要是关于对象占用内存,有些糊涂,敬请指导。
-
#include
class stu
{
private:
int a;
double c;
char p;
};
struct tea
{
int a;
int b;
};
int main()
{
stu st;
printf("%dn", sizeof(int));
printf("%dn", sizeof(double));
printf("%dn", sizeof(char));
printf("%dn",sizeof(st));
tea te;
printf("%dn", sizeof(te));
}代码如上,结果是:
4
8
4
24
8
64位机器下 visual studio 2013结果,
不太明白,为什么类会多出来8个字节。
解决方案
这个类的大小计算要字节对齐,类中最长的为double型8个字节,前后两个int都不足8字节,编译器会加上填充字节,3个8字节加起来就是24字节了 而不是实际的16字节.
解决方案二:
楼上说的对,所以好的程序员在编写代码时候最好把小字节的变量放在前面,这样可以节省内存。。
时间: 2024-10-21 08:11:03