当前位置: 首页 > 知识库问答 >
问题:

android - Segmentation fault: in vtable for __cxxabiv1::__si_class_type_info () ?

汪深
2023-06-22

类 Demo 里声明了一个虚函数,为什么调用虚函数时core 了呢?

core 信息:

Program terminated with signal SIGSEGV, Segmentation fault.
#0  0x0000aab1a12ab in vtable for __cxxabiv1::__si_class_type_info () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
class Demo {
public:
    virtual int32_t Demo() {
         return 0;
    }
};

int main() {
    Demo* d = new Demo();
    d->show(); // core 到这里了
      return 0;
}

共有1个答案

钮轩昂
2023-06-22

这个问题的错误关键提示信息是这个位置
图片.png

这个错误通常被称为段错误,意思是内存访问违反了计算机的地址空间限制。在这种情况下,发生了一个访问虚拟地址未映射到物理地址的错误。 简单一句话解释就是内存未释放。
要解决这个问题,可以考虑使用智能指针的方法,具体可看我去年时候的一篇segment博客
c++内存泄漏与智能指针

大致解释了问题,我们再返回到本问题来看,要解决此问题,我们可以使用 delete 来释放分配的资源。

#include <memory> 
using namespace std; 
class Demo { 
public: 
    virtual int32_t Demo() { 
        return 0; 
    } 
}; 
int main() { 
    Demo* d = new Demo(); 
    unique_ptr<Demo> d_ptr(d); 
    d->show(); // core 到这里了 
    delete d; 
    return 0; 
} 

你可以看到,当 d 指向的实例不再需要时,我们将其从 d_ptr 中删除。这样就可以避免在使用动态分配内存后立即访问该内存而导致的内存访问错误。

 类似资料:
  • JNI绑定 Android上的Java资源 WebView代码组织

  • Native.js for Android封装一条通过JS语法直接调用Native Java接口通道,通过plus.android可调用几乎所有的系统API。 方法: currentWebview: 获取当前Webview窗口对象的native层实例对象 newObject: 创建实例对象 getAttribute: 获取对象(类对象/实例对象)的属性值 setAttribute: 设置对象(类对

  • Android++ 是一个免费的 Visual Studio 扩展,用于支持在 Visual Studio 上开发和调试原生的 Android 应用,主要基于 NDK 的 C/C++ 应用。同时包括可订制的发布、资源管理以及集成了 Java 源码编译。

  • Android(安卓)是一种基于Linux内核的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,由美国谷歌公司和开放手机联盟领导及开发。Android操作系统最初由Andy Rubin开发,主要支持手机。2005年8月由谷歌收购注资。2007年11月,谷歌与84家硬件制造商、软件开发商及电信营运商组建开放手机联盟共同研发改良Android系统。随后谷歌以Apache许可证的授

  • Android(安卓)是一种基于Linux内核的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,由美国谷歌公司和开放手机联盟领导及开发。Android操作系统最初由Andy Rubin开发,主要支持手机。2005年8月由谷歌收购注资。2007年11月,谷歌与84家硬件制造商、软件开发商及电信营运商组建开放手机联盟共同研发改良Android系统。随后谷歌以Apache许可证的授

  • 简介 该库提供J2SE的Swing、AWT等类的安卓实现,引用该库便能在Android上运行J2SE应用程序。 该库实现大多数必需功能,但不是全部的J2SE。 成功示例HomeCenter服务器,该服务器基于J2SE,同时完全运行于Android之上。 使用指引 该库依赖于开源工程HomeCenter。 它不含Activity,需另建Android工程,并引用本库。 Activity和res需作为

  • 前言 少年时我们追求激情,成熟后却迷恋平庸,在我们寻找,伤害,背离之后,还能一如既往的相信爱情,这是一种勇气,每个人都有属于自己的一片森林,迷失的人迷失了,相逢的人会再相逢。 没有人觉得自己差人一等,也没有人一直喜欢居于他人之下,身为一个Android程序员,只有不断的学习,不断的付出自己的努力,自己的汗水,自己的时间,才能让自己进步,学无止境。就上篇而言,我接着来讲一下Android面试时And

  • 我的应用程序上有WebView,我在android 7.0上从用户那里得到了许多相同的错误,同时膨胀了WebView片段。 错误日志: Android看法充气异常:二进制XML文件行#8:二进制XML文件行#8:错误充气类android。网络工具包。网络视图导致:android。看法充气异常:二进制XML文件行#8:充气类android时出错。网络工具包。网络视图 网络视图片段布局: 我从这些设备