|
1322 / 995 / 127
Регистрация: 08.12.2009
Сообщений: 1,299
|
||||||
scanf ?02.04.2010, 23:41. Показов 4051. Ответов 19
Метки нет (Все метки)
господа, подскажите пожалуйста, почему после этого в VC++ вылетает исключение о нарушении доступа (access violation) к каким-то (по ходу одним из первых) адресам памяти???
естественно, если все по-честному делать: scanf("%lf", &buf); то никаких проблем нет.
0
|
||||||
| 02.04.2010, 23:41 | |
|
Ответы с готовыми решениями:
19
scanf в C Scanf scanf() |
|
8384 / 3617 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
|
||
| 03.04.2010, 00:02 | ||
|
потому что вы его неправильно используете.
Это вопрос аналогичен такому
0
|
||
|
Модератор
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,973
|
||||||
| 03.04.2010, 00:31 | ||||||
|
Mikant,
0
|
||||||
|
1322 / 995 / 127
Регистрация: 08.12.2009
Сообщений: 1,299
|
|
| 03.04.2010, 00:50 [ТС] | |
|
M128K145, не, ну тут, понятное дело, непроинициализированная переменная... а у меня куда считанный дабл записывается? и когда?
easybudda, если дочитаете мой пост до конца - там это естественно есть на вопрос ответьте хотя бы на второй, пожалуйста. как и куда память выделяется? я про "физику процесса" спрашиваю, а не про правильные конструкции плюсов. как правильно - везде написано... Добавлено через 3 минуты M128K145, тем более ++a выбрасывает исключение в рантайме, а моя конструкция - нет... зараза...
0
|
|
|
3602 / 2743 / 355
Регистрация: 11.03.2009
Сообщений: 6,304
|
|
| 03.04.2010, 05:06 | |
|
Исключение выбивает потому что происходит попытка записи в секцию кода, которая по умолчанию имеет атрибут только чтение.
0
|
|
|
1322 / 995 / 127
Регистрация: 08.12.2009
Сообщений: 1,299
|
|
| 03.04.2010, 12:45 [ТС] | |
|
kazak, а почему запись в эту секцию происходит ПОСЛЕ main??
0
|
|
|
3602 / 2743 / 355
Регистрация: 11.03.2009
Сообщений: 6,304
|
|
| 03.04.2010, 17:53 | |
|
А почему ты решил, что это происходит после мэйна?
0
|
|
|
|
|||
| 03.04.2010, 18:53 | |||
|
1
|
|||
|
1322 / 995 / 127
Регистрация: 08.12.2009
Сообщений: 1,299
|
||
| 03.04.2010, 19:28 [ТС] | ||
|
зы. при этом открывался еще какой-то файл с кодом, где на его "пустой" строке это исключение и выходило... повтрорить не получается ззы. если всю программу трассировать по шагам - тот же эффект, соответственно
0
|
||
|
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
|
||||||||||||
| 04.04.2010, 08:33 | ||||||||||||
сообщение об ошибке на gcc
она и не должна выдавать, так как может и не быть аргументов
0
|
||||||||||||
|
|
|
| 04.04.2010, 14:02 | |
|
accept, с gcc сравнивать не совсем корректно, потому как gcc выдаёт warning не совсем честным способом: он банально "узнаёт" функцию. Старые версии gcc делали это тупо по имени, а в современных версиях в инклюдах у функций printf (и всей группы), scanf (и всей группы) есть некий атрибут (не помню точно как он называется). говорящий о том, что прототип функции соотвествует действию printf'а и scanf'а соответсвенно. И поэтому gcc лезет разбирать форматную строку и проверяет типы последующих аргументов. Хотя компилятор не обязан заниматься такой ерундой. Это всего лишь пользовательская фича, но никак не стандарт языка. Прочие компиляторы как правило этим не заморачиваются и предупреждений не выдают.
Ну и для порядку перечитай 9-й пост: автор выложил короткий пример (а не всю программу) не для того, чтобы мы нашли тут ошибки, а для того, чтобы пояснили, почему программа падает, да ещё и после исполнения main. А "ни одного предупреждения или ошибки не осталось" относилось к полной программе
0
|
|
|
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
|
||||
| 05.04.2010, 02:42 | ||||
так что, либо он не включил предупреждения, либо их там нет
а он написал, что предупреждений не осталось, он её запустил и она завалилась и, видимо, он стал это расследовать и только потом нашёл эту строку
0
|
||||
|
|
|
| 05.04.2010, 12:00 | |
|
accept, ещё раз призываю - прочти внимательно пост автора. Там говорилось про древний компилятор 1991 года. Такие предупреждения там не выдаются. То, что их выдаёт gcc и lcc - абсолютно не показательно
0
|
|
|
3602 / 2743 / 355
Регистрация: 11.03.2009
Сообщений: 6,304
|
||||||
| 05.04.2010, 14:47 | ||||||
|
Странная вещь, компилю такой код
0
|
||||||
|
8384 / 3617 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
|
|
| 05.04.2010, 15:07 | |
|
kazak, билдер никогда не был нормальной IDE
0
|
|
|
|
||
| 05.04.2010, 15:28 | ||
|
1
|
||
|
3602 / 2743 / 355
Регистрация: 11.03.2009
Сообщений: 6,304
|
|
| 06.04.2010, 13:54 | |
|
Осознал свою ошибку: аргументы функции заносятся в стек с права на лево и поиск следующих аргументов идет вниз по стеку. Я же почему то решил, что все наоборот и при нехватке какого-либа аргумента, функция непременно наткнется на адрес возврата, запись по которому должна вызывать исключение.
0
|
|
|
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
|
||
| 07.04.2010, 03:42 | ||
0
|
||
|
|
|
| 07.04.2010, 09:33 | |
|
Ещё раз говорю. Если в одном компиляторе есть предупреждение, это вовсе не значит, что в другом тоже будет
0
|
|
| 07.04.2010, 09:33 | |
|
Помогаю со студенческими работами здесь
20
Работа со scanf()
scanf, char Scanf в Eclipse
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а привычная функция main(). . .
|
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net
REST сервисы временно не работают, только через Web.
Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
|
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
|
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
|
|
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма).
На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
|
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ *
Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи
и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
|
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым.
Но восстановить их можно так.
Для этого понадобится консольная утилита. . .
|
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
|