Fortran动态分配数组内存
时间: 2024-01-03 12:04:17 浏览: 546
在 Fortran 中,可以使用 `allocate` 和 `deallocate` 命令来动态分配和释放数组的内存。下面是一个简单的例子:
```
program dynamic_array_allocation
implicit none
integer, dimension(:), allocatable :: array
integer :: n, i
! 获取数组长度
print *, "请输入数组长度:"
read *, n
! 分配数组内存
allocate(array(n))
! 初始化数组
do i = 1, n
array(i) = i
end do
! 输出数组
print *, "数组元素为:"
do i = 1, n
print *, array(i)
end do
! 释放数组内存
deallocate(array)
end program dynamic_array_allocation
```
在上面的例子中,我们通过 `allocate` 命令动态分配了一个长度为 `n` 的整型数组 `array` 的内存。然后我们对数组进行初始化,并输出数组元素。最后我们通过 `deallocate` 命令释放了数组的内存。
需要注意的是,动态分配的内存在使用完之后需要手动释放,否则会造成内存泄漏。在程序中使用 `deallocate` 命令来释放动态分配的内存。
相关问题
fortran动态分配多维数组内存
在 Fortran 中,可以使用 `allocate` 和 `deallocate` 命令来动态分配和释放多维数组的内存。下面是一个简单的例子:
```
program dynamic_multidimensional_array_allocation
implicit none
integer, dimension(:,:), allocatable :: array
integer :: m, n, i, j
! 获取数组大小
print *, "请输入数组大小:"
read *, m, n
! 分配数组内存
allocate(array(m,n))
! 初始化数组
do i = 1, m
do j = 1, n
array(i,j) = i * j
end do
end do
! 输出数组
print *, "数组元素为:"
do i = 1, m
do j = 1, n
print *, array(i,j)
end do
end do
! 释放数组内存
deallocate(array)
end program dynamic_multidimensional_array_allocation
```
在上面的例子中,我们通过 `allocate` 命令动态分配了一个大小为 `m` 行 `n` 列的整型二维数组 `array` 的内存。然后我们对数组进行初始化,并输出数组元素。最后我们通过 `deallocate` 命令释放了数组的内存。
需要注意的是,动态分配的内存在使用完之后需要手动释放,否则会造成内存泄漏。在程序中使用 `deallocate` 命令来释放动态分配的内存。
fortran中动态数组
在 Fortran 中,动态数组通常使用 ALLOCATABLE 关键字来声明。下面是一个简单的示例,展示了如何使用 ALLOCATABLE 来创建一个动态数组:
```
program dynamic_array
implicit none
integer, dimension(:), allocatable :: arr
integer :: n, i
write(*,*) 'Enter the size of the array:'
read(*,*) n
allocate(arr(n))
do i = 1, n
arr(i) = i
end do
write(*,*) 'The array is:'
write(*,*) arr
deallocate(arr)
end program dynamic_array
```
在这个示例中,我们首先声明了一个整数类型的、维度未知的数组 arr,并将其标记为可分配的。然后,我们通过调用 ALLOCATE 函数为数组分配 n 个元素的空间。在这个例子中,我们使用循环为数组的每个元素赋值。最后,我们使用 DEALLOCATE 函数释放数组的内存空间。
值得注意的是,在 Fortran 中,动态数组的大小可以在运行时根据需要动态调整。这可以通过调用 ALLOCATE 函数并传递新的大小参数来实现。但是,请注意,重新分配数组的大小会导致所有原始数据的丢失。
阅读全文