在Fortran中从数组复制到另一个时出现堆栈问题?

问题描述 投票:1回答:1

如果我在Fortran中执行以下副本,则>

 arr(i1:i2) = u(1:n) 

其中SIZE(arr(i1:i2)) == SIZE(u(1:n)),并且大小相对较大,例如2M个双精度元素。

如果变量arr是另一个可分配数组的指针别名。 Fortran会使用堆栈或堆内存来处理副本分配吗?

如果正在使用堆栈,那么选择该选项有什么具体原因吗?

[不必在Linux终端上运行ulimit -s unlimited的情况下,如何避免使用堆栈的编译器不获得堆栈溢出??

如果我在Fortran arr(i1:i2)= u(1:n)中进行以下复制,其中SIZE(arr(i1:i2))== SIZE(u(1:n))并且大小是相对的大,例如2M的双精度元素。如果变量arr是一个...

segmentation-fault fortran intel-fortran
1个回答
2
投票

如果变量是指针,则编译器几乎可以肯定使用堆栈为副本创建一个临时文件,因为它必须假定可能存在重叠。对于不连续的段,也可能不是简单的重叠,因此按不同顺序进行复制并非总是可行。

© www.soinside.com 2019 - 2024. All rights reserved.