pbootcms网站模板|日韩1区2区|织梦模板||网站源码|日韩1区2区|jquery建站特效-html5模板网

在 C++ 中如何確定對象的大小?

How do you determine the size of an object in C++?(在 C++ 中如何確定對象的大小?)
本文介紹了在 C++ 中如何確定對象的大小?的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!

問題描述

例如,假設我有一個 Temp 類:

For example, say I have a class Temp:

class Temp
{
    public:
        int function1(int foo) { return 1; }
        void function2(int bar) { foobar = bar; }

    private:
        int foobar;
};

當我創(chuàng)建一個 Temp 類的對象時,我將如何計算它需要多少空間,以及它在內(nèi)存中的表示方式(例如 | foobar 的 4 個字節(jié)| function1 的 8 個字節(jié) | etc | )

When I create an object of class Temp, how would I calculate how much space it needs, and how is it represented in memory (e.g.| 4 bytes for foobar| 8 bytes for function1 | etc | )

推薦答案

對于一階近似,對象的大小是其組成數(shù)據(jù)成員的大小之和.您可以確定它永遠不會比這更小.

To a first order approximation, the size of an object is the sum of the sizes of its constituent data members. You can be sure it will never be smaller than this.

更準確地說,編譯器有權(quán)在數(shù)據(jù)成員之間插入填充空間,以確保每個數(shù)據(jù)成員都滿足平臺的對齊要求.一些平臺對對齊非常嚴格,而其他平臺 (x86) 更寬容,但在正確對齊的情況下會表現(xiàn)得更好.因此,即使是編譯器優(yōu)化設置也會影響對象大小.

More precisely, the compiler is entitled to insert padding space between data members to ensure that each data member meets the alignment requirements of the platform. Some platforms are very strict about alignment, while others (x86) are more forgiving, but will perform significantly better with proper alignment. So, even the compiler optimization setting can affect the object size.

繼承和虛函數(shù)增加了額外的復雜性.正如其他人所說,您的類的成員函數(shù)本身并不占用每個對象"的空間,但是該類接口中虛函數(shù)的存在通常意味著存在一個虛表,本質(zhì)上是一個用于查找函數(shù)指針的表動態(tài)解析正確的函數(shù)實現(xiàn)以在運行時調(diào)用.虛擬表(vtbl)通常通過存儲在每個對象中的指針訪問.

Inheritance and virtual functions add an additional complication. As others have said, the member functions of your class themselves do not take up "per object" space, but the existence of virtual functions in that class's interface generally implies the existence of a virtual table, essentially a lookup table of function pointers used to dynamically resolve the proper function implementation to call at runtime. The virtual table (vtbl) is accessed generally via a pointer stored in each object.

派生類對象還包括其基類的所有數(shù)據(jù)成員.

Derived class objects also include all data members of their base classes.

最后,訪問說明符(公共的、私有的、受保護的)在數(shù)據(jù)成員的打包方面為編譯器提供了一定的余地.

Finally, access specifiers (public, private, protected) grant the compiler certain leeway with packing of data members.

簡短的回答是 sizeof(myObj) 或 sizeof(MyClass) 總是會告訴您對象的正確大小,但其結(jié)果并不總是容易預測.

The short answer is that sizeof(myObj) or sizeof(MyClass) will always tell you the proper size of an object, but its result is not always easy to predict.

這篇關(guān)于在 C++ 中如何確定對象的大小?的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網(wǎng)!

【網(wǎng)站聲明】本站部分內(nèi)容來源于互聯(lián)網(wǎng),旨在幫助大家更快的解決問題,如果有圖片或者內(nèi)容侵犯了您的權(quán)益,請聯(lián)系我們刪除處理,感謝您的支持!

相關(guān)文檔推薦

How can I read and manipulate CSV file data in C++?(如何在 C++ 中讀取和操作 CSV 文件數(shù)據(jù)?)
In C++ why can#39;t I write a for() loop like this: for( int i = 1, double i2 = 0; (在 C++ 中,為什么我不能像這樣編寫 for() 循環(huán): for( int i = 1, double i2 = 0;)
How does OpenMP handle nested loops?(OpenMP 如何處理嵌套循環(huán)?)
Reusing thread in loop c++(在循環(huán) C++ 中重用線程)
Precise thread sleep needed. Max 1ms error(需要精確的線程睡眠.最大 1ms 誤差)
Is there ever a need for a quot;do {...} while ( )quot; loop?(是否需要“do {...} while ()?環(huán)形?)
主站蜘蛛池模板: 东莞市天进机械有限公司-钉箱机-粘箱机-糊箱机-打钉机认准东莞天进机械-厂家直供更放心! | 聚氨酯保温钢管_聚氨酯直埋保温管道_聚氨酯发泡保温管厂家-沧州万荣防腐保温管道有限公司 | 知企服务-企业综合服务(ZiKeys.com)-品优低价、种类齐全、过程管理透明、速度快捷高效、放心服务,知企专家! | 楼承板-开口楼承板-闭口楼承板-无锡海逵 | 购买舔盐、舔砖、矿物质盐压块机,鱼饵、鱼饲料压块机--请到杜甫机械 | 模具ERP_模具管理系统_模具mes_模具进度管理_东莞市精纬软件有限公司 | 气力输送设备_料封泵_仓泵_散装机_气化板_压力释放阀-河南锐驰机械设备有限公司 | 减速机三参数组合探头|TSM803|壁挂式氧化锆分析仪探头-安徽鹏宸电气有限公司 | 存包柜厂家_电子存包柜_超市存包柜_超市电子存包柜_自动存包柜-洛阳中星 | 低浓度恒温恒湿称量系统,强光光照培养箱-上海三腾仪器有限公司 | 电磁辐射仪-电磁辐射检测仪-pm2.5检测仪-多功能射线检测仪-上海何亦仪器仪表有限公司 | 深圳离婚律师咨询「在线免费」华荣深圳婚姻律师事务所专办离婚纠纷案件 | 广州/东莞小字符喷码机-热转印打码机-喷码机厂家-广州瑞润科技 | 南京兰江泵业有限公司-水解酸化池潜水搅拌机-絮凝反应池搅拌机-好氧区潜水推进器 | 压滤机-洗沙泥浆处理-压泥机-山东创新华一环境工程有限公司 | 工业设计,人工智能,体验式3D展示的智能技术交流服务平台-纳金网 J.S.Bach 圣巴赫_高端背景音乐系统_官网 | 十字轴_十字轴万向节_十字轴总成-南京万传机械有限公司 | 深圳市东信高科自动化设备有限公司 | 水平筛厂家-三轴椭圆水平振动筛-泥沙震动筛设备_山东奥凯诺矿机 包装设计公司,产品包装设计|包装制作,包装盒定制厂家-汇包装【官方网站】 | 氧氮氢联合测定仪-联测仪-氧氮氢元素分析仪-江苏品彦光电 | 酒精检测棒,数显温湿度计,酒安酒精测试仪,酒精检测仪,呼气式酒精检测仪-郑州欧诺仪器有限公司 | 农业仪器网 - 中国自动化农业仪器信息交流平台 | 杜康白酒加盟_杜康酒代理_杜康酒招商加盟官网_杜康酒厂加盟总代理—杜康酒神全国运营中心 | 接地电阻测试仪[厂家直销]_电缆故障测试仪[精准定位]_耐压测试仪-武汉南电至诚电力设备 | 海峰资讯 - 专注装饰公司营销型网站建设和网络营销培训 | 盘扣式脚手架-附着式升降脚手架-移动脚手架,专ye承包服务商 - 苏州安踏脚手架工程有限公司 | 杭州ROHS检测仪-XRF测试仪价格-百科 | 碳化硅,氮化硅,冰晶石,绢云母,氟化铝,白刚玉,棕刚玉,石墨,铝粉,铁粉,金属硅粉,金属铝粉,氧化铝粉,硅微粉,蓝晶石,红柱石,莫来石,粉煤灰,三聚磷酸钠,六偏磷酸钠,硫酸镁-皓泉新材料 | 合肥展厅设计-安徽展台设计-合肥展览公司-安徽奥美展览工程有限公司 | 涂层测厚仪_漆膜仪_光学透过率仪_十大创新厂家-果欧电子科技公司 | 广域铭岛Geega(际嘉)工业互联网平台-以数字科技引领行业跃迁 | 长沙中央空调维修,中央空调清洗维保,空气能热水工程,价格,公司就找维小保-湖南维小保环保科技有限公司 | 有机废气处理-rto焚烧炉-催化燃烧设备-VOC冷凝回收装置-三梯环境 | 成都LED显示屏丨室内户外全彩led屏厂家方案报价_四川诺显科技 | 聚合氯化铝-碱式氯化铝-聚合硫酸铁-聚氯化铝铁生产厂家多少钱一吨-聚丙烯酰胺价格_河南浩博净水材料有限公司 | 飞扬动力官网-广告公司管理软件,广告公司管理系统,喷绘写真条幅制作管理软件,广告公司ERP系统 | 结晶点测定仪-润滑脂滴点测定仪-大连煜烁| 心肺复苏模拟人|医学模型|急救护理模型|医学教学模型上海康人医学仪器设备有限公司 | 执业药师报名时间,报考条件,考试时间-首页入口 | 南京展台搭建-南京展会设计-南京展览设计公司-南京展厅展示设计-南京汇雅展览工程有限公司 | 成都竞价托管_抖音代运营_网站建设_成都SEM外包-成都智网创联网络科技有限公司 |