Как избежать переполнения стека, когда Fortran создает большой внутренний временный массив?

У меня есть код на Фортране, который вызываетRESHAPE переупорядочить матрицу таким образом, чтобы измерение, которое я сейчас собираюсь зациклить, стало первым изменяющимся измерением (основной порядок столбцов в Фортране).

Это не имеет ничего общего с совместимостью C / Fortran.

Теперь матрица довольно большая, и когда я называюRESHAPE Функция Я получаю ошибку сегмента, которая, я уверен, является переполнением стека. Я знаю это, потому что я могу скомпилировать свой код в ifort с-heap-arrays и проблема исчезает.

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

Могу ли я получить этот вызовRESHAPE Функция для использования кучи, а не стека для использования внутренней памяти.

В худшем случае мне придется «свернуть свое»RESHAPE функция для этого экземпляра, но я бы хотел, чтобы был лучший способ.

Ответы на вопрос(1)

Ваш ответ на вопрос