回 帖 发 新 帖 刷新版面

主题:动态数组不能彻底释放吗

求教,在使用指针动态数组时,子程序有循环,在不断创建和释放(deallocate)一个指针动态数组,用任务管理器监控内存使用情况,内存一直在缓慢增加,释放时并没有出现内存使用减少的情况。
是因为deallocate命令不能彻底释放吗?仅指针悬空呢,地址还不可读?我怎样才能在循环中保持稳定的内存使用?而且我感觉同样的内容,动态数组占用的内存远大于静态数组。
有人说,fortran在指针和动态数组上做的还不够好,是这样吗?

回复列表 (共4个回复)

沙发

动态数组有一个头,如果你有很多动态数组,那结果将是得不偿失。因为FORTRAN的动态数组必须保存SHAPE信息,而C则不用。
如果你确定调用了Deallocate,那我很明确的告诉你,内存确实被释放了。至于为何没变小,那应该是系统还未回收而已。因为它“发现”你要不停的申请。

板凳

Windows 的内存调配远比你想象的复杂。这已经跟Fortran无关了。

3 楼

windows说,你小子想骗我,我也骗你……

4 楼

话说 Windows 任务管理器那个内存占用确实不准。
话说 windows 平坦内存映射模式确实不好统计内存占用,否则占用的资源就得不偿失了。

我来回复

您尚未登录,请登录后再回复。点此登录或注册