Ошибка шины Fortran при изменении параметра

Всякий раз, когда я присваиваю новое значение параметру, я получаю сообщение об ошибке шины. Я не понимаю, как я указываю на несуществующую память. У меня должен быть доступ к этому адресу, так как он объявлен в списке параметров, если только Фортран не позволяет изменять параметры без специального объявления. Остальная часть моего кода работает без ошибок. Я выделил его просто для этого задания.

Я запускаю gfortran (не знаю, какая версия, случайно) с терминала в OS X.

SUBROUTINE p_list (c_number, c_matrix)
    INTEGER     c_number
    INTEGER     c_matrix(8000,20)
!   ... 
    c_number = 1000
!   ...
END SUBROUTINE p_list

person Old McStopher    schedule 13.12.2010    source источник
comment
Как ты это называешь? Я не знаком с современными форматами FORTRAN, но знаю, что в более ранних версиях FORTRAN такую ​​программу можно было сломать, передав константу (например, вызвав p_list(0, my_matrix)). Это потому, что FORTRAN неявно передает все по ссылке, включая константы (!)   -  person Dan Breslau    schedule 13.12.2010
comment
На самом деле, отличный улов. Вызов из main был тестовой строкой кода с использованием константы. Замена его объявленным INTEGER в вызове, похоже, помогла! Превратите этот комментарий в ответ, и я выберу его победителем. ;)   -  person Old McStopher    schedule 13.12.2010
comment
Я не уверен, что хочу выиграть вопрос FORTRAN, но ладно ;-)   -  person Dan Breslau    schedule 13.12.2010
comment
@Old McStopher: я предлагаю вам объявить НАМЕРЕНИЯ для аргументов подпрограмм; вы получите гораздо больше помощи от компилятора. Судя по вашим вопросам, вы, кажется, изучаете устаревшую версию Fortran, более поздние версии предоставляют необходимые функции для написания гораздо более безопасных программ.   -  person High Performance Mark    schedule 13.12.2010
comment
Поддерживаются ли намерения в стандарте F77? Это действительно устарело, но, к сожалению, таково требование этого проекта. Спасибо, что проявили интерес к моей линейке вопросов. [Я только что опубликовал еще один, если вам интересно... ;)]   -  person Old McStopher    schedule 13.12.2010
comment
@ Old McStopher - Должны ли мы предположить, что у вас нет компилятора f90?   -  person Rook    schedule 13.12.2010
comment
На самом деле я использую то, что, как мне кажется, является довольно новой версией gfortran GNU, поэтому я думаю, что она работает через F95.   -  person Old McStopher    schedule 13.12.2010


Ответы (1)


Как ты это называешь? Я не знаком с современными ФОРТРАНами, но знаю, что в более ранних версиях ФОРТРАНа такую ​​программу можно было сломать, передав константу (например, вызвав p_list(0, my_matrix)). Это потому, что FORTRAN неявно передает все по ссылке, включая константы (!)

person Dan Breslau    schedule 13.12.2010