C++类、结构对象内存布局浅析
最近面试多,出的题目很多都有如下形式,给定一个class或者struct的定义,例如这样:
其中一个方格(不是很方……)代表一个字节,红色的部分是a占用的内存空间,绿色是b,蓝色是c,黄色是d,而带斜线的部分则是被0x80000000赋值的内存区域。
好了,现在给出另外一个问题,如果struct是这样的:
那么结果各位应该也知道了。好了,一些拓展问题,上面这个struct的内存是在栈中分配的,如果是用new运算符,使其在堆上面分配,那么结果是什么?各位可以亲手试一下,直接把答案全部说出来,就有点没有意思了,哈哈
好啦,其实到这里,文章还没完,要再进一步讲一些
下面要讨论类,即class。
按照惯例,继续先上代码,请猜猜下面各个类其sizeof的返回值是什么:
struct node1 {int a;char b, c, d, e;long long f;};struct node2 {int a;int b;long long c;};
相信上面的内容,对于我来说,应该能应付大部分sizeof题目,后来看了一些资料,发现有牛人已经对这个问题作过文,这里附上拓展阅读的链接:拓展阅读1:C++虚函数表解释
拓展阅读2:C++对象的内存布局(上)
拓展阅读3:C++对象的内存布局(下)
******<转载说明>******
转载注明:诚实的偷包贼
原文地址:http://blog.csdn.net/fanfank/article/details/12175585
******<转载说明/>******
