ошибка сегментации на fprintf в Dev-C++

В частности, что может вызывать ошибку сегментации при вызове fprintf. Вызов fprintf ниже. Если существует слишком много возможностей, которые могут вызвать это, укажите общий набор причин.

status = printf("Processing %u by %u image.  Please wait...\n", 3, 3);

Когда я отлаживаю свою программу «main.c» (.c, а не .cpp), возникает ошибка сегментации, и я получаю два сообщения о том, что Dev-C++ имеет ошибку сегментации. статус установлен на 12, что соответствует первой «3».

Меня больше интересует теория компьютерных наук для решения этой проблемы. Если это возможно?

Редактировать:

Каков список возможных ошибок, вызывающих ошибки сегментации?

Является ли проверка/анализ кода единственным способом найти проблему?

Существуют ли инструменты отладчика, которые могут это сделать, и как они работают (вкратце)?


person Jason    schedule 17.03.2014    source источник
comment
Опубликуйте полный исходный код.   -  person scottt    schedule 17.03.2014
comment
На это вообще нельзя ответить?   -  person Jason    schedule 17.03.2014
comment
Общий ответ: ошибки сегментации вызваны доступом к памяти. Проблема в том, что часть вашего кода, вызывающая это, может быть не такой, как вы ожидаете.   -  person scottt    schedule 17.03.2014
comment
Итак, ошибка сегментации может не иметь ничего общего с вызовом printf? Возникла ли ошибка из-за какого-то фонового процесса, который уловил ошибку из более ранней строки? Я хотел бы знать, если и возможно, как это могло быть? Спасибо   -  person Jason    schedule 17.03.2014
comment
Осмелюсь сказать, что опубликованный вами сегмент кода не может быть причиной ошибки сегментации. Вы, вероятно, получили ошибку памяти (переполнение буфера или что-то в этом роде) ранее в вашей программе, и это просто случайный сбой в строке printf. Лучшее, что вы можете сделать, это просмотреть код с помощью отладчика и наблюдать за распределением памяти и т. д.   -  person jpw    schedule 17.03.2014
comment
Тогда был бы полезен список вещей, которые вызывают ошибки сегментации. Это возможно? Я знаю о написании за пределами конца строки или попытке использовать неверный адрес указателя (я думаю). Что еще там?   -  person Jason    schedule 17.03.2014
comment
Как вы наблюдаете за распределением памяти? Пожалуй, стоит добавить эти вопросы к основному вопросу...   -  person Jason    schedule 17.03.2014


Ответы (1)


С mingw и gdb я обнаружил, что если вы не используете Application Verifier, когда программа останавливается и где возникает ошибка, в принципе не имеют никакого отношения друг к другу. Однако, когда он работает, я обнаружил, что он довольно надежен в поиске проблемы.

person user26347    schedule 17.03.2014