Проблема с Compaq Visual Fortran

durka82

В какой-то момент компилятор говорит, что ехе-файл слишком большой и работать не будет.
Вот такое сообщение:
warning LNK4084: total image size 1664643072 exceeds max (268435456); image may not run
Расшифровка этого предупреждения такая:
Linker Tools Warning LNK4084
total image size size exceeds max (256MB); image may not run
The application exceeds the limit of 256 megabytes.
Неужели размер приложения действительно ограничен?
Или проблема на самом деле в другом?
В этой программе куча статических массивов с размерностью 10^7.
Эта ошибка начинает выдаваться после добавления еще пары массивов.
При этом если 10^7 заменить на 5*10^6 - прога компилится, но при попытке выбрать хотя бы половину массивов на этапе выполнения выдается сообщение, что стек переполнен
Какой нафиг стек, если все массивы статические?

durka82

Ну и что?
В моем случае это
Windows XP/2000/NT 4.0 (SP3+)/Me/98 have a limit of 2 GB
не нарушается.
Винда ХР.

lili197602

А сколько стоит оперативки? Программа сколько ест? При замене статических массивов на динамические проблема решается?

durka82

От кол-ва оперативки не зависит (на одной машине гиг, на другой 2).
А что, с динамическими массивами должно лучше работать?

lili197602

С динамическими массивами работает. Вот этот код

program memory
implicit none
real(4) :: a(500000000)
end program memory

приводит к сообщению: warning LNK4084: total image size 2000322560 exceeds max (268435456); image may not run
А вот этот код

program memory
implicit none
real(4allocatable :: a(:)
allocate(a(500000000
deallocate(a)
end program memory

работает нормально.
Кстати, при размере массива 300000000 сообщение аналогичное, но программа запускается =)
В ссылках вроде ясно написано, что ошибка связана с невозможностью адресации к большим массивам. Для WinXP про 2Gb написано только с учетом того что стоит SP начиная с третьего. Может SP более ранний?

durka82

В ссылках вроде ясно написано, что ошибка связана с невозможностью адресации к большим массивам.
Так проблема появлялась при добавлении массивов при сохранении размерности - или имеется в виду суммарная длина всех массивов?
Для WinXP про 2Gb написано только с учетом того что стоит SP начиная с третьего. Может SP более ранний?
А разве уже есть SP3 для ХР?
С динамическими массивами работает
Спасибо, попробую
п.с.: а еще в некоторых книгах пишут, что динамические массивы в фортране - это "ненужные дополнения, которые выгледят как следование моде и желание сохранить популярность Фортрана" (с) С.Бобровский Программная инженерия (стр 51 3-й абзац)
После таких заявлений как-то даже книгу читать расхотелось

durka82

Что-то я не нашел ничего про sp3 для ХР, а sp2 у меня стоит.
Или ты какое-то конкретное обновление имеешь в виду?

lili197602

Так проблема появлялась при добавлении массивов при сохранении размерности - или имеется в виду суммарная длина всех массивов?
Именно суммарная. Пробовал в этих примерах создавать несколько с сохранением размерности. Одна фигня. =)
А разве уже есть SP3 для ХР?

Ошибся, там про NT4 речь похоже идет.
Оставить комментарий
Имя или ник:
Комментарий: