Chinaunix

标题: 为什么会调用 __cxa_pure_virtual ?求解释~~ [打印本页]

作者: kokkokkko    时间: 2010-12-09 15:43
标题: 为什么会调用 __cxa_pure_virtual ?求解释~~
本帖最后由 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~~~
等待牛人解释~~~
作者: 幻の上帝    时间: 2010-12-09 16:01
在构造函数里调用也可能导致这个问题...
作者: kokkokkko    时间: 2010-12-09 19:18
恩,构造函数调用虚函数也会出这个问题,但是这个应该不是.
作者: kokkokkko    时间: 2010-12-10 09:05
垂悬指针也会出现这个现象
父类指针指向子类实例
子类被释放后,用父类指针调用




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2