Форум программистов, компьютерный форум, киберфорум
Наши страницы
Fortran
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
Mishan_Aviator
0 / 0 / 0
Регистрация: 23.03.2014
Сообщений: 14
1

Объявление массивов в подпрограммах

15.10.2014, 15:10. Просмотров 788. Ответов 1
Метки нет (Все метки)

Доброго времени суток!
Подскажите пожалуйста как происходит выделение памяти в подпрограммах. Я не профессиональный программист, но по учееб в аспирантуре приходится программировать решатель на языке фортран90. Специфика решателя (метод конечных элементов) такова, что приходится иметь дело с массивами (одномерными) достаточно большого размера (порядка нескольких десятков миллионов ячеек). Программа состоит из основной (управляющей) программы, которая, в основном, вызывает внешние подпрограммы. При этом большие массивы передаются в подпрограмму, обрабатываются в ней и возвращаются обратно.
Собственно, вопрос: происходит ли при вызове внешней подпрограммы (или даже при компиляции) повторное выделение памяти? Если да, то освобождается ли память после завершения работы подпрограммы? Как избежать повторного выделения большого кол-ва памяти, неужели все подобные подпрограммы придется делать внутренними и не вписывать формальные и фактические параметры?
Заранее благодарю за помощь

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.10.2014, 15:10
Ответы с готовыми решениями:

Объявление глобального массива (размерности и элементы известны заранее)
Столкнулся с такой задачей: есть два массива real по 10 элементов каждый. И...

Решение задач на обработку одномерных массивов. Использование массивов в качестве параметров в подпрограммах
В массиве x(n) подсчитать количество положительных k1 и количество...

Объявление массивов
Здравствуйте! В учебнике по языку массивы объявляются так int arr = new int;...

Объявление массивов в С/С++
Пытаюсь создать матрицу размера n: #include <iostream> using namespace std; ...

Объявление массивов в коде
Ну и еще один вопрос,это объявление массивов внутри кода. Я имею в виду не...

1
Mysterious Light
Эксперт по математике/физике
4015 / 1976 / 403
Регистрация: 19.07.2009
Сообщений: 3,000
Записей в блоге: 21
18.10.2014, 18:55 2
Как в Фортране обстоят дела, я не знаю, но практически во всех языках программирования при объявлении массива выделяется память под него, причём соответствующая переманная лишь указывает на массив. Это означает, что при передаче в другую функцию/подпрограмму новая память не выделяется.

Проверить эту догадку можно таким образом: объявить массивы A и B, заполнить A как-то, далее присвоить B=A и поменять какой-то элемент в B. Если при этом поменяется соответствующий элемент в A, то мы работаем с одним массивом, а иначе — массив копируется.

Если массив таки копируется, то я не вижу ничего более подходящего, чем явно вводить на него указатели. К сожалению, я не помню, как в Фортране работать с указателями, кроме факта, что их там аж два типа, поэтому Вам нужно будет разбираться самостоятельно.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.10.2014, 18:55

Объявление динамических массивов
Подскажите надо в массив типа: (запишу на дельфи языке) buf: array of...

Объявление переменных-массивов
Совсем не шарю в массивах program sdf; type A=ARRAY of real; B=array of...

Объявление массивов в С-шном стиле
На курсах говорили, что раньше в C нельзя было константой задать размер массива...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru