MST

星途 面试题库

面试题:Fortran内存管理策略之基础运用

在Fortran中,假设你定义了一个二维数组 `INTEGER :: arr(10, 20)`,请描述如何在程序结束前正确释放该数组占用的内存?如果数组是动态分配的(例如使用 `ALLOCATE` 语句),释放内存的步骤又有何不同?
39.1万 热度难度
编程语言Fortran

知识考点

AI 面试

面试题答案

一键面试
  1. 静态数组(如 INTEGER :: arr(10, 20)
    • 在Fortran中,静态数组的内存由编译器自动管理。当包含该数组定义的作用域结束时,内存会自动释放。例如,如果数组定义在一个子程序内部,当子程序执行完毕返回调用处时,该数组占用的内存就会被释放。不需要额外的用户代码来释放内存。
  2. 动态分配数组(使用 ALLOCATE 语句)
    • 当使用 ALLOCATE 语句动态分配数组后,需要使用 DEALLOCATE 语句来释放内存。假设动态分配数组如下:
    INTEGER, ALLOCATABLE :: arr(:,:)
    ALLOCATE(arr(10, 20))
    
    • 在程序结束前释放该数组内存的代码如下:
    DEALLOCATE(arr)
    
    • 注意事项:
      • 在调用 DEALLOCATE 之前,确保数组已经被分配(即已经执行过 ALLOCATE 语句),否则可能会导致运行时错误。可以使用 ALLOCATED 内在函数来检查数组是否已经分配,例如:
      INTEGER, ALLOCATABLE :: arr(:,:)
      ALLOCATE(arr(10, 20))
      if (ALLOCATED(arr)) then
          DEALLOCATE(arr)
      end if