崩溃"vtable for __cxxabiv1::__class_type_info ()"意思?

Crash at "vtable for __cxxabiv1::__class_type_info ()" mean?

本文关键字:意思 info class for cxxabiv1 崩溃 vtable type      更新时间:2023-10-16

当我尝试运行一个应用程序时,它指向这一行:在"vtable for __cxxabiv1::__class_type_info()"时崩溃

这种崩溃并不总是发生,但有时会发生。我没有使用任何动态库。知道这坠机意味着什么吗?这可能是记忆损坏吗?

类布局看起来像这样:-Base有2个派生类Derived1和Derived2(以及许多其他派生类)。但是在这个场景中,我们只对Derived1和Derived2感兴趣。

Base有虚函数f1()和f2()。这些不是纯虚函数,有一个基本的实现,但它们在Derived1和Derived2

被覆盖

在Derived2中,我有一个指向Derived1对象的指针

在一个Derived2::f2()我调用Derived1_ptr->f1()。这就是我崩溃的原因。

Derived1和Derived2在不同的库中

Crash at vtable for __cxxabiv1::__class_type_info ()

最可能的原因是:您正在使用悬空指针,并且vtable已被垃圾覆盖。

这个崩溃并不总是发生,但有时会发生。

悬空指针的错误通常是这样的。

你没说你在哪个站台。Valgrind和Address Sanitizer(在最新版本的GCC和Clang中可用)可能会直接指向错误。