运行错误R6025的解决办法

快乐鹦鹉 2009-12-29 09:39:45
程序运行偶尔会出现如下错误,不知各位有何解决办法。
runtime error R6025
- pure virtual function call
英文的翻译大家就不必给出了,网上也能搜索到。
问题是出现这种问题后,怎么去定位问题产生的地方和解决它。
请有经验的朋友支个招。
...全文
25785 24 打赏 收藏 举报
写回复
24 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
fxtxtxdt 2011-11-18
我也遇到了这个问题,太麻烦了,大概知道是虚函数的问题,但是我貌似没定义过虚函数啊,而且就是找不到问题产生的地方和解决方法,楼主这个问题怎么解决的啊?调了几个星期了还是弄不出来,处于崩溃边缘啊。。。
  • 打赏
  • 举报
回复
na_he 2009-12-30
[Quote=引用 17 楼 bobob 的回复:]
娜娜还在老东家么?好久不见~_~
[/Quote]

呵呵,是呀, 老东家,大概有两个月都在忙CMMI的事情,就没有上来了,还好最后通过了CMMI level three.祝贺一下了。
  • 打赏
  • 举报
回复
快乐鹦鹉 2009-12-29
[Quote=引用 15 楼 na_he 的回复:]
调用纯虚函数是一种编程错误,因此您需要查找对纯虚函数调用和重写代码,因此不调用。

若要查找纯虚函数调用的一种方法是纯虚函数替换为调用 Windows API 函数 DebugBreak 的实现。 在使用调试器时 DebugBreak 将导致硬编码的断点。 当代码停止运行在该断点处时,您可以查看要查看已在调用该函数调用堆栈。

查找纯虚函数调用的另一种方法是在 PureVirt.c 中找到该 _purecall 函数上设置断点。 有关该函数的重大具有保持堆栈不变,以便您可以跟踪什么正在发生的优点。
[/Quote]
说实话,我自己写的类,目前还没有出现过纯虚类,因为没有必要这么做。所以不存在重新代码的问题。
目前这个问题应该是一些系统所有的模块的内部调用出现的错误。根源可能来自于外部调用参数上的错误所致。我将进行代码调整后再确认问题是否还存在。
谢谢了。
  • 打赏
  • 举报
回复
na_he 2009-12-29
调用纯虚函数是一种编程错误,因此您需要查找对纯虚函数调用和重写代码,因此不调用。

若要查找纯虚函数调用的一种方法是纯虚函数替换为调用 Windows API 函数 DebugBreak 的实现。 在使用调试器时 DebugBreak 将导致硬编码的断点。 当代码停止运行在该断点处时,您可以查看要查看已在调用该函数调用堆栈。

查找纯虚函数调用的另一种方法是在 PureVirt.c 中找到该 _purecall 函数上设置断点。 有关该函数的重大具有保持堆栈不变,以便您可以跟踪什么正在发生的优点。
  • 打赏
  • 举报
回复
快乐鹦鹉 2009-12-29
我用的是ACCESS。两个线程同时操作数据库时,如果其中一个有错误现象,那么程序是有BUG的。也许解决了这个BUG就没事了。
  • 打赏
  • 举报
回复
oyljerry 2009-12-29
这个问题也碰到过,还不能重现,特别机器,特定情况下会出现,一般还是某种情况下触发了纯虚函数调用,出错时看能不能编译器调试,或者分析一下代码看是否调用到接口函数
  • 打赏
  • 举报
回复
wangk 2009-12-29
鹦鹉用的是什么数据库?,操作数据库的组件是什么呢?
难道是操作数据库的COM指针出问题了?
  • 打赏
  • 举报
回复
哈利路亚1874 2009-12-29
Runtime Error 真的很可恶,原来遇到过一次,很简单一个问题,结果调试了两天才弄出来
就是在创建子进程后,父进程马上退出,影响了环境继承!最后Sleep了一下就没问题了,楼主这个估计还是
间接调用了纯虚函数造成的:)
  • 打赏
  • 举报
回复
快乐鹦鹉 2009-12-29
现在我估计问题在我的线程处理中。我多个线程都需要操作数据库,但我只用了一个数据库连接。这个地方有漏洞。等我改了再看看吧。不过就这个错误现象大家可以分析分析。
  • 打赏
  • 举报
回复
快乐鹦鹉 2009-12-29
就算知道错误的意思,但是如何才能定位发生在哪个类的哪个函数呢?
错误的意思好理解,关键是有什么手段去定位和解决。
===
我以前的系统没有出现过这个现象。新的版本中将一些处理放到了线程中,就出现了一些节歇性的异常。头疼啊。
  • 打赏
  • 举报
回复
辛鹤 2009-12-29
用boundschecker
  • 打赏
  • 举报
回复
wangk 2009-12-29
这个很讨厌,要动态附加调试了。
  • 打赏
  • 举报
回复
bragi523 2009-12-29
我遇到过几次
我的纯虚调用一般都是析构你顺序有一些问题导致
不知道老大的是什么原因引起
  • 打赏
  • 举报
回复
bobob 2009-12-29
实在不行就用boundschecker吧,代码内伤几乎都能找出来,数组越界,内存越界,野指针,函数参数错误等等
  • 打赏
  • 举报
回复
jameshooo 2009-12-29
从未遇见过这个问题,出错时直接退出了?还是能中断?
也许是指针使用了错误的类型转换方法。
  • 打赏
  • 举报
回复
na_he 2009-12-29
http://support.microsoft.com/kb/125749
Microsoft的解答 FYI..
  • 打赏
  • 举报
回复
bobob 2009-12-29
msdn里面的例子,间接调用了纯虚函数
/* Compile options needed: none
*/

class A;

void fcn( A* );

class A
{
public:
virtual void f() = 0;
A() { fcn( this ); }
};

class B : A
{
void f() { }
};

void fcn( A* p )
{
p->f();
}

// The declaration below invokes class B's constructor, which
// first calls class A's constructor, which calls fcn. Then
// fcn calls A::f, which is a pure virtual function, and
// this causes the run-time error. B has not been constructed
// at this point, so the B::f cannot be called. You would not
// want it to be called because it could depend on something
// in B that has not been initialized yet.

B b;

void main()
{
}
  • 打赏
  • 举报
回复
bobob 2009-12-29
- pure virtual function call
调用了纯虚函数?
  • 打赏
  • 举报
回复
踏实每一步 2009-12-29
Error Message
not enough space for stdio initialization


This error occurs when there is not enough free memory available to initialize the standard I/O support.

按这个说是,内存不够用。
  • 打赏
  • 举报
回复
danxuezx 2009-12-29
平时都见到鹦鹉帮别人,这里赶紧跟着学习了
  • 打赏
  • 举报
回复
加载更多回复
相关推荐
发帖
VC/MFC
加入

1.6w+

社区成员

VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
申请成为版主
帖子事件
创建了帖子
2009-12-29 09:39
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……