C 对象占用内存大小的思考.doc

C 对象占用内存大小的思考.doc

ID:52275237

大小:64.00 KB

页数:4页

时间:2020-03-26

C 对象占用内存大小的思考.doc_第1页
C 对象占用内存大小的思考.doc_第2页
C 对象占用内存大小的思考.doc_第3页
C 对象占用内存大小的思考.doc_第4页
资源描述:

《C 对象占用内存大小的思考.doc》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、C++对象占用内存大小的思考一直有这样几个疑问,空屮一个对象占有多大内存?会不是里面的函数越多,占有的内存就越大?1:空类占有的内存^pragmaonceclassTestClassI};结果:sizeof(TestClass)=1原因:吐要为每一个类在内存屮一个独一无二的地址,所以即便是空类也会被分配1个字节来初始化,所以空类的占有的字节是1.结论:空类也要占用一个字节的内存2:函数占有内对象的内存吗?^pragmaonceclassTestClassIpublic:TestClass(void);'TestClass(void

2、);voidfunc();};sizeof(TestClass)二1原因:我们在进行成员函数的调用如0bject.func(),其实是这样的过程--func(Object,this)。函数虽然在内部声明,但是成员函数的大小不在类的对象里面,而是多个成员对象公用函数,〃我们访问类的成员函数是通过类里面的一个指针实现,而这个指针指向的是—•个table,table里面记录的各个成员函数的地址(当然不同的编译可能略有不同的实现)〃(引号里而的话为copy网上的,感觉还是有点问题的,如果类里面有这样一个指针,岂不是会至少占用四个字节,那么

3、就不会出现空类的大小是1T,应该是直接把Object,func()翻译成TestClass::func(Object,this))。3:仅有数据成员ttpragmaonceclassTestClassIprivate:intb;};sizeof(TestClass)二4此吋类的大小就是其屮数据成员的大小4:字节对齐^pragmaonceclassTestClassIpublic:TestClass(void);'TestClass(void);private:charc;intb;};结果:sizeof(TestClass)=8原

4、因:char类型只有1个字节,但是为了提高cpu的计算速度,编译器会将1个字节补成4个字节5:半有静态变量吋候ttpragmaonceclassTestClassipublic:TestClass(void);^TestClass(void);private:charc;intb;staticintm;};结果:sizeof(TestClass)=8原因:静态变量不占用类对彖的内存6:为有虚函数ttpragmaonceclassTestClasspublic:TestClass(void);virtual^TestClass(vo

5、id);private:charc;intb;};结果:sizeof(TestClass)=12原因:此时类对彖内部有一个指向虚函数表的指针,这个指针会占用4个字节的内存。

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。