2014-01-29 1 views
1

Я работаю над заданием, и я в значительной степени занят, но я столкнулся с блокпостом. Я пытаюсь распечатать все числа «emirp», которые генерирует моя программа, но если я попытаюсь выполнить печать после запуска цикла поиска EMIRP, это сообщение вызывает ошибку Debug Assertion Failed с этим сообщением.Сбой отладки в C, не уверен, что вызывает его

enter image description here

Вот исходный код программы.

http://pastebin.com/f81rE4hb

Я C++ парня в переходе к использованию C, так что, возможно, это проблема C конкретной вызывающая. Если вам нужно объяснение чего-либо, просто спросите. Я компилирую это с помощью Microsoft Visual Studio 2012 Professional.

+1

Опубликовать * Проблемный * код здесь. – this

+0

Ошибка assert указывает на строку 1034 определенного исходного файла 'output.c'. Ссылка на код кажется чем-то другим. – lurker

+0

output.c не является частью моей программы. Я предполагаю, что это часть библиотеки C. –

ответ

0

Ваша проблема в том, что вы делаете emirps++:

  1. Вы не будете в состоянии освободить память, что вы изначально выделенные, так emirps больше не указывает на начало этой памяти.

  2. Вы, безусловно, не можете пройти мимо emirps[i] до printf (или любой другой функции в этом отношении) в этой точке.

Кстати, только заметил, что есть «целая куча mallocs» в вашем коде не освобожденными везде ...

+0

Не могу поверить, что я этого не заметил ... Я изменил его, поэтому теперь он просто использует [] нотацию для назначения значений местам в памяти, но ошибка остается. Я не думаю, что это имело к этому отношение. –

0

В моем случае это было связано со смешением Юникода основной программы с не юникодом внешнего библиотека, написанная на C. Это то, что помогло мне. Перед вызовом первого printf во внешней библиотеке мне пришлось изменить режим консоли на ansi. После вызова внешней библиотеки мне пришлось установить режим обратно в Юникод:

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

_setmode(_fileno(stdout), _O_TEXT); 
.... 
_setmode(_fileno(stdout), _O_U16TEXT); 
Смежные вопросы