vs开发人员命令查看C++类 data member 内存布局
C++中类的数据成员在内存中时如何分布的,有继承,虚拟继承等情况下又是怎么分布的?在VS编译器中可以查看。
源代码如下:
#include<iostream>
using namespace std;class CFurniture
{
public:CFurniture(){m_nPrice = 0;}~CFurniture(){printf("virtual ~CFurniture()\r\n");}virtual int GetPrice(){return m_nPrice;}
protected:int m_nPrice;
};class Csofa:virtual public CFurniture
{
public:Csofa(){m_nColor = 1;m_nColor = 2;}~Csofa(){printf("virtual ~Csofa()\r\n");}virtual int GetColor(){return m_nColor;}virtual int SitDown(){return printf("Sit Down and rest your legs\r\n");}protected:int m_nColor;
};class CBed : virtual public CFurniture
{
public:CBed(){m_nPrice = 3;m_nLength = 4;m_nWidth = 5;}~CBed(){printf("virtual ~CBed()\r\n");}virtual int GetArea(){return m_nLength*m_nWidth;}virtual int Sleep(){return printf("go to sleep\r\n");}protected:int m_nLength;int m_nWidth;
};class CSofaBed : public Csofa,public CBed
{
public:CSofaBed(){m_nHeight = 6;}~CSofaBed(){printf("virtual ~CSoftBed()\r\n");}virtual int SitDown(){return printf("Sir Down on the sofa bed\r\n");}virtual int Sleep(){return printf("go to sleep on the sofa bed\r\n");}virtual int GetHeight(){return m_nHeight;}protected:int m_nHeight;
};void main(){CSofaBed SofaBed;CFurniture* pFunniture = &SofaBed;Csofa* pSofa = &SofaBed;CBed* pBed = &SofaBed;
}
1、打开 Visual Studio Tools 中的 VS2013 开发人员命令提示
2、切换到.cpp文件所在的目录
3、输入命令:cl -d1reportSingleClassLayout[类名] [文件名].cpp
4、也可以在编辑界面中,右击[文件名].cpp->属性–>配置属性–>C/C+±->命令行:其他选项,添加:/d1reportSingleClassLayout[类名] [文件名].cpp
5、编译,会在输出栏中显示上述信息。
5、用gcc的-fdump-class-hierarchy 参数把内存布局给打印出来
-fsyntax-only 只是检查语法。
gcc -fdump-class-hierarchy -fsyntax-only CppTest.cpp
结果会在目录下生成一个CppTest.cpp.t01.class的文本文件。
vs开发人员命令查看C++类 data member 内存布局相关推荐
- vs2015开发人员命令提示工具 查看C++类对象模型
VS2015 开发人员命令提示位置 在开始菜单可以输入vs2015 会出现 VS2015 开发人员命令提示 工具,打开工具. 使用命令查看C++类对象模型 cl /d1 reportSingleCl ...
- hadoop和hdfs命令_Hadoop 1.x和2.x HDFS基本开发人员命令,“ hadoop”命令
hadoop和hdfs命令 In this post, we are going to discuss about Hadoop 1.x and Hadoop 2.x HDFS Basic comma ...
- 利用linux的df和du命令查看文件和目录的内存占用
版权声明:本文为博主原创文章,转载请超链接注明出处. https://blog.csdn.net/ljc1026774829/article/details/74935658 当磁盘大小超过标准 ...
- C++对象模型5——类对象的内存布局
一.类对象的内存布局 1.1.单一继承的类对象布局 示例1 class base { public:int m_fai;int m_faj; }; class derive : public base ...
- iOS开发人员命令行上的Git版本控制
这件事发生在我们所有人身上:我们更改了代码,突然之间,一切似乎都"坏了". 如果您知道如何使用版本控制,那么这就是福音. 在本教程中,我们将从命令行学习如何使用Git. 关于版本控 ...
- 作为开发人员,这四类Code Review方法你都知道吗?
本文翻译自:https://dzone.com/articles/4-types-of-code-reviews-any-professional-developer 转载请注明出处:葡萄城官网,葡萄 ...
- IE11 F12 开发人员工具 查看 Cookie
参考网址:Using the F12 developer tools in IE11 Step1 : IE11 => F12 打开 开发人员工具 Step2:开发人员工具 => 网络F5 ...
- c语言中函数(linux命令查看依赖类库),数组(内存存储是连续的内存空间),Linux下查看a,a[0],a之间的值,可变数组
1.查看一个c函数依赖的类的方式: gcc t.c -o app 使用ldd app命令查看依赖的类,截图如下: 2.库函数包括: a.C标准库函数,(c89/c99标准定义的函数接口,由操作系统厂商 ...
- Linux中查看进程的虚拟地址空间内存布局
要查看一个进程的虚拟地址空间的内存布局,需要设置阻塞.如果没有设置阻塞,当./a.out按下去后,程序执行的速度非常快以至于来不及查看,所以需要设置阻塞. #include<stdio.h> ...
最新文章
- QT的滚动条极简教程
- dos与ddos攻击原理
- 吴恩达 coursera AI 第一课总结+作业答案
- Java实现生产消费模型的5种方式
- window电脑查看ssh公钥,以及将自己的公钥添加到Github等类似网站
- #中队列的数据结构_数据结构与算法拓展(一)
- python 线性回归模型_如何在Python中建立和训练线性和逻辑回归ML模型
- 收藏 | 人脸识别最新进展
- 为推广苹果音乐服务 库克再度现身北京
- 微课|中学生可以这样学Python(例6.1):杨辉三角形
- db2 常用命令(一)
- web安全day24:一文读懂Linux系统安装软件的几种方法
- 6、set_xlim、set_ylim、xticks、yticks、set_xlabels、set_ylabels 和 双坐标轴twin()
- sed修炼系列(二):sed武功心法(info sed翻译+注解)
- ubuntu14上安装ros教程
- 《Python数据分析与数据挖掘实战》第十五章学习——文本分析
- 1. 虚拟化Docker
- SAR舰船检测数据集总结
- 厚物科技PXIe机箱PXI机箱PXIe便携机HW-1693BAT
- Hadoop:INFO mapreduce.Job: Running job
热门文章
- 字符串的操作方法(第二天)
- Ubuntu上安装nginx步骤及问题记录
- 你可以去学python_你是怎么学好Python的?
- 【Linux 内核】Linux 内核源码目录说明 ② ( drivers 目录 | fs 目录 | include 目录 | init 目录 | ipc 目录 | kernel 目录 )
- 【Android WebSocket】Android 端 WebSocket 基本用法 ( 下载 Java-WebSocket源码 | 导入 Java-WebSocket-1.5.2 工程作为依赖 )
- 【Groovy】闭包 Closure ( 闭包的 delegate 代理策略 | OWNER_FIRST | DELEGATE_FIRST | OWNER_ONLY | DELEGATE_ONLY )
- 【C 语言】文件操作 ( 配置文件读写 | 完整代码示例 ) ★
- 【Flutter】Flutter 混合开发 ( Flutter 与 Native 通信 | Android 端实现 BasicMessageChannel 通信 )
- 【设计模式】原型模式 ( 浅拷贝 | 深拷贝 | 原型与单例冲突 | 禁用 final )
- 数据库面试知识点汇总