Как избежать переполнения стека, когда Fortran создает большой внутренний временный массив?
У меня есть код на Фортране, который вызываетRESHAPE
переупорядочить матрицу таким образом, чтобы измерение, которое я сейчас собираюсь зациклить, стало первым изменяющимся измерением (основной порядок столбцов в Фортране).
Это не имеет ничего общего с совместимостью C / Fortran.
Теперь матрица довольно большая, и когда я называюRESHAPE
Функция Я получаю ошибку сегмента, которая, я уверен, является переполнением стека. Я знаю это, потому что я могу скомпилировать свой код в ifort с-heap-arrays
и проблема исчезает.
Я не хочу изменять размер стека. Этот код должен быть переносимым для любого компьютера, и пользователю не нужно заботиться о размере стека.
Могу ли я получить этот вызовRESHAPE
Функция для использования кучи, а не стека для использования внутренней памяти.
В худшем случае мне придется «свернуть свое»RESHAPE
функция для этого экземпляра, но я бы хотел, чтобы был лучший способ.