- UID
- 4434
- 性别
- 男
Vim
- 积分
- 1723
- F 币
- 1045 元
- 最后登录
- 2025-2-5
- 贡献
- 494 点
- 注册时间
- 2020-1-27
- 权杖
- 1 枚
惯用编译器:GFortran for Windows
大师
Vim
- F 币
- 1045 元
- 贡献
- 494 点
|
本帖最后由 Transpose 于 2025-1-16 16:04 编辑
1.如果定义成pointer或者allocatable的话,调用deallocate会调用析构函数
2.如果定义在子程序或者block里面,出了作用域会调用析构函数
3.定义在主程序的,程序运行结束并不会调用析构函数(这个可能是系统自己释放所有内存了,所以不调用析构函数,此处存疑)
4.自定类型使用函数或者默认的构造函数进行赋值,也会调用析构函数 (看起来是创建了一个副本然后再析构掉,因此使用子程序而不是函数可以有效减少析构次数)
上面这几点是根据编译器行为总结的,如果有不正确的可以提出改正
你说的情况应该是第三种。
|
|