面试题答案
一键面试- 静态数组(如
INTEGER :: arr(10, 20)
):- 在Fortran中,静态数组的内存由编译器自动管理。当包含该数组定义的作用域结束时,内存会自动释放。例如,如果数组定义在一个子程序内部,当子程序执行完毕返回调用处时,该数组占用的内存就会被释放。不需要额外的用户代码来释放内存。
- 动态分配数组(使用
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
- 在调用
- 当使用