C++ 类对象内存分布
来源:互联网 发布:数据库漏洞扫描软件 编辑:程序博客网 时间:2024/06/07 00:55
使用VS隐藏命令,编译时输出类内存分布:项目-->工程名称(XXX)属性-->配置属性-->C/C++ -->命令行,在命令行中添加:/d1reportAllClassLayout或/d1reportSingleClassLayoutXXX(Class名称)。
/d1reportAllClassLayout:打印所有类内存分布。
/d1reportSingleClassLayoutXXX(Class名称):打印指定类内存分布。
测试代码如下:
class Base{public:Base() : nBase(10) {}public:virtual void funBase(){ printf("-=-=-=- funBase() -=-=-=-=\n"); }private:int nBase;};class Derive : public Base{public:Derive() : nB(100) {}public:virtual void funBase(){ printf("-=-=-=- funDerive1() -=-=-=-=\n"); }virtual void funOwn(){ printf("-=-=-=- funOwn() -=-=-=-=\n"); }void DeriveCommonFun() {}private:int nB;};
编译输出类Derive如下:
1>class Derive size(12):1> +---1> | +--- (base class Base)1> 0 | | {vfptr}1> 4 | | nBase1> | +---1> 8 | nB1> +---1>Derive::$vftable@:1> | &Derive_meta1> | 01> 0 | &Derive::funBase1> 1 | &Derive::funOwn1>Derive::funBase this adjustor: 01>Derive::funOwn this adjustor: 0从上面可以看出,继承类Derive大致内存分布:
虚函数表、基类变量、继承类变量。
另外,根据对类内存分布了解,可以遍历调用相关函数和变量验证,具体可参照:
http://blog.csdn.net/haoel/article/details/3081328/
http://blog.csdn.net/haoel/article/details/3081385
0 0
- C++ 类对象内存分布
- C++ 对象内存分布
- C++对象内存分布
- C++对象 内存分布
- C语言内存分布
- C程序内存分布
- C/C++内存分布
- c程序内存分布
- C 的内存分布
- C内存分布
- C内存分布
- C内存分布
- c内存分布
- c程序内存分布
- c 内存分布管理
- C语言内存分布
- C内存分布详解
- C语言内存分布
- Flex 布局教程
- iOS使用GCDSocketManager实现长连接
- git学习笔记
- 编译Linux 3.10内核
- 乔布斯内部演讲
- C++ 类对象内存分布
- PAT 1124. Raffle for Weibo Followers (20)
- 前端热门框架Vue.js入门篇
- Android 应用安全开发之浅谈加密算法的坑
- sensorservice代码阅读
- inet_addr 和inet_ntoa函数作用
- java之I/O模型!!!
- Freeline使用攻略
- NotImplementedError: Only the following pseudo-classes are implemented: nth-of-type.