Como evitar um estouro de pilha quando o Fortran produz uma matriz grande, interna e temporária?
Eu tenho algum código Fortran que chamaRESHAPE
reordenar uma matriz de modo que a dimensão que agora estou prestes a passar por loop se torne a primeira dimensão variável (ordem principal da coluna em Fortran).
Isso não tem nada a ver com a interoperabilidade C / Fortran.
Agora a matriz é bastante grande e quando eu chamo oRESHAPE
função Recebo uma falha seg que estou muito confiante de que há um estouro de pilha. Eu sei disso porque posso compilar meu código no ifort com-heap-arrays
e o problema desaparece.
Não quero modificar o tamanho da pilha. Esse código precisa ser portátil para qualquer computador sem que o usuário precise se preocupar com o tamanho da pilha.
Existe alguma maneira de receber esta ligação doRESHAPE
função para usar o heap e não a pilha para uso de memória interna.
Na pior das hipóteses, terei que 'rolar sozinho'RESHAPE
função para esta instância, mas eu gostaria que houvesse uma maneira melhor.