对象在内存中结构
分类: Programing
2006-06-14 12:33
对象可以的空间,可以被分配在堆或者栈中.它的大小,是类的数据成员的大小,没有包含函数的空间.编译器只为每个对象维护一份数据成员.这一点做的很明智.因为,对同一个类的不同对象来说,行为是他们的公共属性,而状态才是决定一个对象区别于另外一个对象的关键所在.
另外,派生类的对象的大小等于所有基类的数据成员的大小加上自己数据成员的大小.派生类的实质是对基类的一种包含.
至于static数据的情况和虚基类的情况,等下再说.
使用堆对象比使用栈对象的效率要高.因为,堆要执行内存搜索操作,要花费些时间.栈对象只需要移动指针就可以构件,(实际上也就是一个减esp的操作).但栈的空间有限,不适合创建比较大的对象,否则会栈溢出.堆对象使用很灵活,但是需要程序员自己去管理,容易造成内存泄漏.