开发者社区 问答 正文

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

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

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

    2024-08-06 14:58:36 举报
    赞同 2 评论

    评论

    全部评论 (0)

    登录后可评论
问答标签:
问答地址:
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等