开发者社区> 问答> 正文

为什么需要为需要this指针调整的虚函数开辟新的内存空间?

为什么需要为需要this指针调整的虚函数开辟新的内存空间?

展开
收起
不吃核桃 2024-08-06 11:35:41 20 0
1 条回答
写回答
取消 提交回答
  • 在C++中,当通过基类指针调用派生类中的虚函数时,如果派生类改变了基类成员的布局(例如,通过添加新的成员变量或调整成员变量的顺序),那么虚函数在访问这些成员时就需要一个正确的this指针。如果直接使用基类指针作为this指针,可能会导致访问到错误的内存位置。因此,LLVM的VTableBuilder在构建虚函数表时,会检查是否需要调整this指针,如果需要,则会为这些虚函数开辟新的内存空间(通常是通过thunk技术),并在调用这些函数之前将this指针调整为指向派生类对象的正确地址。

    2024-08-06 14:58:36
    赞同 2 展开评论 打赏
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
内存取证与IaaS云平台恶意行 为的安全监控 立即下载
云服务器ECS内存增强型实例re6全新发布 立即下载
低代码开发师(初级)实战教程 立即下载