VS查看类的内存布局

Posted axin-

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了VS查看类的内存布局相关的知识,希望对你有一定的参考价值。

VS查看类的内存布局_axin

本文是对前人文章的一些总结和新的理解,原文链接

MSVC有个隐藏的“/d1”开关,通过这个开关可以查看项目中类的内存布局情况。

1、查看单个类的内存布局:

修改项目属性(右键 项目→属性→C/C++→命令行),在 其它选项 中添加” /d1 reportSingleClassLayoutCC ”开关,表示需要查看类CC的内存布局。

特别注意 “reportSingleClassLayout” 和 “CC” 之间 没有空格!

2、查看所有类的内存布局:

“ /d1 reportAllClassLayout ” 是查看所有类的布局,这样编译后会在输出界面上输出很多类的布局

3、查看某些类的内存布局:

类名CC的匹配规则如下:

/d1 reportSingleClassLayoutXX,"XX"是填入你想查看的类的名字,编译后会在输出界面上输出类的布局,任何匹配它的类名都会被输出。比如想看class A,你输入了/d1reportSingleClassLayoutA,但是你会发现会编译器输出很多无关的类,如struct ABC、Class inAttribute Class dbA…因为它们的类名都包含有A这个字母。

可以利用这个匹配特性达到查看某些类的功能,例如:

对想要查看的类名特殊命名。
比如:所有想查看内存布局的类名均以 “ Class_1_ ” 结尾
即可使用“ /d1 reportSingleClassLayoutClass_1_ ”查看特定类的内存布局

以上是关于VS查看类的内存布局的主要内容,如果未能解决你的问题,请参考以下文章

VS查看C++类的内存分布初步了解类的内存分布

一个Objective-C对象如何进行内存布局?(考虑有父类的情况)

如何用vs查看结构体布局

一个类的内存布局是连续的吗?

C++拾遗 从内存布局看C++虚继承的实现原理

C++拾遗 从内存布局看C++虚继承的实现原理