VS查看C++类的内存分布初步了解类的内存分布
Posted bcbobo21cn
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了VS查看C++类的内存分布初步了解类的内存分布相关的知识,希望对你有一定的参考价值。
在VC++项目属性,如下图红线位置,输入 /d1 reportAllClassLayout ,确定;
之后,编译代码,即可查看类的内存分布;
写一个简单C++类,生成,在输出窗口可看到如下;
普通类的排布方式,成员变量依据声明的顺序进行排列(类内偏移为0开始);
继承出一个类,增加一个变量c;生成;看到类的内存分布如下;
子类继承了父类的成员变量,在内存排布上,先是排布了父类的成员变量,接着排布子类的成员变量;
写一个简单类,增加一个虚函数;生成;则看到如下;
这时内存结构分成了两个部分,上面是内存分布,下面是虚表;
VS所带编译器是把虚表指针放在了内存的开始处(0地址偏移),然后再是成员变量;
下面生成了虚表,紧跟在&test1_meta后面的0表示,这张虚表对应的虚指针在内存中的分布;下面列出了虚函数,左侧的0是这个虚函数的序号,这里只有一个虚函数,只有一项,如果有多个虚函数,会有序号为1,为2的虚函数列出来;
以上是关于VS查看C++类的内存分布初步了解类的内存分布的主要内容,如果未能解决你的问题,请参考以下文章