我正在编写一段Fortran代码,犹豫是否使用可分配数组或指针数组。我在某个地方读到,可分配数组比指针数组具有显着优势:
1)更有效率,因为它们始终在内存中是连续的
2)不可能出现内存泄漏
有人能否确认这一点?你会建议使用哪一个?在这两种选择之间,执行代码的执行速度结果如何?
我正在编写一段Fortran代码,犹豫是否使用可分配数组或指针数组。我在某个地方读到,可分配数组比指针数组具有显着优势:
1)更有效率,因为它们始终在内存中是连续的
2)不可能出现内存泄漏
有人能否确认这一点?你会建议使用哪一个?在这两种选择之间,执行代码的执行速度结果如何?
可分配数组可以使代码更加高效,因为这些数组将是连续的。特别是如果数组被传递给一个子程序,那么连续性可以避免编译器创建临时副本。
对于子例程中的局部变量(没有 SAVE 属性)(对于 Fortran 95 及更高版本),可分配数组在退出子例程时会自动解除分配,从而避免了内存泄漏。使用可分配数组不可能发生内存泄漏,除非程序员没有解除分配不再需要的数组。
使用指针的原因:取数组的一段,或创建像链表这样的数据结构。对于创建大小在运行时确定的数组的目的,我建议使用可分配数组而不是指针。
allocatable
来创建的数组进行DEALLOCATE
吗? - Carl Norum