gpt4 book ai didi

memory-leaks - 取消分配 Fortran 派生类型是否也会自动取消分配成员数组和指针?

转载 作者:行者123 更新时间:2023-12-04 05:21:49 25 4
gpt4 key购买 nike

在 Fortran 中,如果我有一个派生类型的可分配数组,每个数组由一个指针和一个可分配数组组成,

type group
real, pointer :: object
real, allocatable :: objectData(:,:)
end type group

type(group), allocatable :: myGroup(:)

我是否能够通过简单的调用来释放包含在这种类型中的所有内存
deallocate(myGroup)

或者我是否需要在释放派生类型之前先释放每个类型中的数组:
do i = 1, size(myGroup)
nullify(myGroup(i)%object)
deallocate(myGroup(i)%objectData)
end do

deallocate(myGroup)

我倾向于选项 2 并在释放派生类型之前取消所有内存,如果不仅仅是为了确保不会发生内存泄漏,但如果选项 1 是等效的,那么这将有助于将来引用并为我节省几行的代码。

最佳答案

只有可分配的组件才会自动解除分配。您必须自己释放指针。

小心,你必须解除分配 指针,而不仅仅是无效。取消它只会删除对已分配内存的引用。如果不释放,就会发生内存泄漏。

关于memory-leaks - 取消分配 Fortran 派生类型是否也会自动取消分配成员数组和指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29038025/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com