2011-11-07 135 views
0

有人报道我的程序,它会弹出以下错误消息的错误: enter image description hereC++奇怪的错误消息

在节目中,这是由VS2008编译的C++ DLL错误occours。我可以重现错误,但无法找出问题所在。我已经为内存泄漏或错误的分配做了一堆测试,但没有成功。

现在奇怪的是:当我添加一个主要功能的代码,编译为EXE,然后运行完全相同的事情,一切都好。该错误仅作为DLL出现。 下一个奇怪的是,当我按下“忽略”时,程序继续并按预期完成其工作。

所以,I'm寻找2种类型的答案: - 答案,帮助我找到了这个错误 - 答案,帮助我“自动忽略”或隐藏该errormessage的,所以它不会occour。这样可以,因为结果没有区别。

我很感激任何帮助或建议。

谢谢!

更新

像约阿希姆Pileborg说,从来就创建了一个简单的测试C++项目,调用我的DLL,它完美的作品!通常调用DLL的程序是用DELPHI编写的,所以我认为它可能是DELPHI的一个bug ......奇怪:DLL的调用适用于99.9999 ..%,但在一个特定情况下,出现IN错误IN Dll。这不是通话失败...真的,真的很奇怪的故事:S

+0

您是否尝试过制作一个加载该DLL的最小可执行文件,而不是将某个可执行文件放在实际的DLL之外?你有同样的问题吗?另外,因为你显然拥有DLL的源代码,为什么不在调试模式下构建它,然后按“重试”来调试它? –

+0

你有没有违规行的源代码? – Vlad

+0

您是否尝试过点击“重试”来调试应用程序?这应该告诉你什么函数调用抛出错误。 (关闭主题...有史以来最糟糕的按钮选择) – Alan

回答

0

通过调试器,我能够看到调用堆栈,代码中的哪个函数显示错误。搜索这个例程后,我可以找出如何禁用显示它。

1

好的...这是一个负数。更简单的事情......也许你的代码是做一个无效\负大小的malloc?

奇怪的是,二进制数字是11111111111111111111111111111100,可能你的尺寸计算是错误的。然而,它可能是一个更复杂的错误,例如由于缓冲区溢出。

你不应该忽略这个错误,可能是一个更复杂和危险的错误的症状。 尝试调试您的分配,尝试获取正在执行此无效分配的代码片段。

您可以重载新运算符或重新定义malloc,替换它们您的调试函数,您可以在其中检查传递的参数(大小)。

+0

你确定你有二进制转录吗?它在我看来不是。 – jpalecek

+0

在二进制数实际上是'11111111111111111111111111111100' – Vlad

+0

是的抱歉:)纠正,谢谢。 –

1

4294967292 - 即(unsigned)-4。你要么做一些计算大小的错误分配,有的整数溢出或者其他。

我试着把一个断点放在malloc(或任何分配函数)上,并检查坏值来自哪里。