Гейзенбаг Visual C++ enterprise 6.0 и Compaq visual FORTRAN professional 6.6.0. Если убрать комментарий с write, программа работает исправно. Ошибка повторяется на разном железе. У кого какие мысли?
Re: Гейзенбаг попробуй вместо write написать какой-нить бестолковый оператор, например, zzz=x+y - и посмотри как будет вести себя программа. какая-то фигня с компиляторами, наверное. что-то оставляют в регистрах.
Re: Гейзенбаг Память портится где-то. Ищи, где пишешь до начала или за концом массива. И действительно, смотри отладчиком.
Re: Гейзенбаг Да, скорее всего andy прав. Когда компилируется оператор write - то в сегмент данных кладется довольно длинная строка. Насколько я понимаю, она по логике никогда не используется или используется очень нечасто. Ошибка в коде (запись за границы массива) может "засирать" место, занимаемое этой строкой, но ты это не видишь. Если строку убрать, то ошибка начинает "засирать" другие, более важные данные. Если мелкомягкий отладчик позволяет устанавливать брекпойнт на изменение памяти - поставь брекпойнт на изменение области памяти (первые байт или первое слово по адресу строки).
Re: Гейзенбаг Ухх, господа, старпёры... Вот ведь и есть желание изучить Фортран и Пролог, только времени нету. "Память портится" - люблю за это свои C/C++. GC - must die Бздемс, а какая нелёгкая, заставляет использовать Пролог в наше время?
Re: Гейзенбаг Типа того. Просто Пролог мне более интересен, от того и "очепятка". А вообще я в своё время в ахуе был, когда 15 лет назад 50-летние "тётеньки" на Клиппере БД фигачили