c++ 类,在内存中是如何分布的?

dbyoung 2017-11-30 09:03:55
C++ 中,譬如有一个CTest 类。
我定义了 CTest* test;
在 test 被 new 之前(test 还没有被实例化),类的信息都已经分配好了。
类的成员函数地址都已经分配好了。

实例化类后,调用成员函数,也只不过是指向这些,在类没有实例化前已经分配好的地址。

我如何在类实例化之前获取到这些成员函数的地址?

望高手指点!
...全文
437 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
dbyoung 2017-11-30
  • 打赏
  • 举报
回复
没弄明白楼上说的,和我的问题有啥关系。
赵4老师 2017-11-30
  • 打赏
  • 举报
回复
《深度探索C++对象模型》 《C++反汇编与逆向分析技术揭秘》
Saleayas 2017-11-30
  • 打赏
  • 举报
回复
看看 C++ 的名字碾平,可以直接在代码中获取这些成员函数的。 或者使用成员函数指针来获取这些函数,但是此时这些函数可能会被覆盖的。 由于 C++ 支持多继承,所以 C++ 的成员函数很复杂的。直接入口往往都是修正 this 指针用的。
dbyoung 2017-11-30
  • 打赏
  • 举报
回复
回复5楼: 版主呀,谢谢关注! 我的确是想通过汇编的方式来获取地址。但这方面资料很少。 现在只能通过调试代码,查看内存、汇编代码,来分析。
谁帮我内推 2017-11-30
  • 打赏
  • 举报
回复


这是我以前无聊做的一个小实验,你这样把地址都打印出来就明白了!
dbyoung 2017-11-30
  • 打赏
  • 举报
回复
回复4楼: 我定义的是 CTest* test; 没实例化,编译器也已经分配好内存了。 回复5楼: 对的。没有反射。 回复6楼: 已找到,正在学习。多谢。 多谢各位指点!
schlafenhamster 2017-11-30
  • 打赏
  • 举报
回复
搜索VC知识库文章-《直接调用类成员函数地址,》概要: 介绍了如何取成员函数的地址以及调用该地址.
oyljerry 2017-11-30
  • 打赏
  • 举报
回复
类的信息,都在一个统一的代码块中。你需要获取这些信息,C++不支持反射的概念。需要用汇编等解析
sevancheng 2017-11-30
  • 打赏
  • 举报
回复
没实例化没有分配内存,实例化时分配内存
dbyoung 2017-11-30
  • 打赏
  • 举报
回复
谢谢大神指点。

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧