免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 10010 | 回复: 3
打印 上一主题 下一主题

[C++] 为什么会调用 __cxa_pure_virtual ?求解释~~ [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-12-09 15:43 |只看该作者 |倒序浏览
本帖最后由 kokkokkko 于 2010-12-09 19:23 编辑

父类中是有一个虚函数
但是子类中实现了
core文件中出现了
  1. #7  0x60000000c6276710 in __cxa_pure_virtual ()
  2.     at /tmp/gcc-4.2.4.tar.gz/gcc-4.2.4/libstdc++-v3/libsupc++/pure.cc:55
  3. #8  0x613bf60:0 in CConnectionPool::closeAll (this=0x40089480)
复制代码
搜了一下__cxa_pure_virtual
  1. 00046 extern "C" void
  2. 00047 __cxa_pure_virtual (void)
  3. 00048 {
  4. 00049   writestr ("pure virtual method called\n");
  5. 00050   std::terminate ();
  6. 00051 }
复制代码
难道调用了纯虚函数?调用纯虚函数的代码是编译不过的.
后来又找到一种说法,线程切换的时候,
一个清空了虚函数表,另外一个线程却正要用
导致这个问题,
但是,好像用的fork~~~
等待牛人解释~~~

论坛徽章:
0
2 [报告]
发表于 2010-12-09 16:01 |只看该作者
在构造函数里调用也可能导致这个问题...

论坛徽章:
0
3 [报告]
发表于 2010-12-09 19:18 |只看该作者
恩,构造函数调用虚函数也会出这个问题,但是这个应该不是.

论坛徽章:
0
4 [报告]
发表于 2010-12-10 09:05 |只看该作者
垂悬指针也会出现这个现象
父类指针指向子类实例
子类被释放后,用父类指针调用
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP