C++类所占内存大小计算
转载时请注明出处和作者联系方式
文章出处:http://blog.youkuaiyun.com/chenchong08
作者联系方式:vision_chen@yeah.net
说明:笔者的操作系统是32位的。
class A {};
sizeof( A ) = ?
sizeof( A ) = 1
明明是空类,为什么编译器说它是1呢?
空类同样可以实例化,每个实例在内存中都有一个独一无二的地址,为了达到这个目的,编译器往往会给一个空类隐含的加一个字节,这样空类在实例化后在内存得到了独一无二的地址.所以sizeof( A )的大小为1.
class B
{
public:
B() {}
~B() {}
void MemberFuncTest( int para ) { }
static void StaticMemFuncTest( int para ){ }
};
sizeof( B ) = ?
sizeof( B ) = 1

本文探讨了C++中类所占内存大小的计算,包括空类、含有不同成员(虚函数、非虚函数、静态成员)的类以及继承关系下的类大小。指出空类通常占1字节,虚函数表占4字节,静态成员不计入类大小,而成员变量会根据内存对齐规则占用空间。总结了成员函数与内存占用的关系,并提供了不同操作系统下的测试结果。
最低0.47元/天 解锁文章
2637

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



