调试断言在C中失败,不确定是什么导致它

时间:2014-01-29 21:44:07

标签: c visual-studio-2012

我正在完成任务,我已经完成了很多工作,但我遇到了障碍。我正在尝试打印出我的程序生成的所有“emirp”数字,但是如果我在运行EMIRP查找循环后尝试打印,则会在此消息中导致Debug Assertion Failed错误。

enter image description here

这是节目源。

http://pastebin.com/f81rE4hb

我是C ++过渡到使用C的人,所以也许这是导致它的C特定问题。如果您需要任何解释,请询问。我正在使用Microsoft Visual Studio 2012 Professional编译它。

2 个答案:

答案 0 :(得分:0)

您的问题是emirps++

  1. 您将无法释放最初分配的内存,因为emirps不再指向该内存的开头。

  2. 你肯定不能在那时将emirps[i]传递给printf(或任何其他功能)。

  3. 顺便说一下,你注意到你的代码中有一大堆“mallocs”没有被释放...

答案 1 :(得分:0)

在我的情况下,它与将unicode主程序与用C编写的非unicode外部库混合有关。这对我有帮助。在外部库中调用第一个printf之前,我必须将控制台模式更改为ansi。在外部库调用后,我必须将模式设置回unicode:

#include <io.h>
#include <fcntl.h>

_setmode(_fileno(stdout), _O_TEXT);
....
_setmode(_fileno(stdout), _O_U16TEXT);