爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 6295|回复: 3

[混合编程] IDL编程学习之释放内存三法宝

[复制链接]

新浪微博达人勋

发表于 2017-4-15 17:52:01 | 显示全部楼层 |阅读模式

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册 新浪微博登陆

x
本帖最后由 15195775117 于 2017-4-15 17:52 编辑

第三法宝:temporary函数
这个函数在使用大数组进行计算后就释放大数组的内存,阅后即焚。
IDL> a=dist(200)
IDL> b=temporary(a)-1
IDL> help,b
B               FLOAT     = Array[200, 200]
IDL> help,a
A               UNDEFINED = <Undefined>

BLAS_AXPY函数一样,又是一个比直接算更高效的函数。
第二法宝:DELVAR
字面意思就是删除变量,即释放变量内存。
IDL> a=dist(100)
IDL> delvar,a
IDL> a
% Attempt to call undefined procedure/function: 'A'.

书上说,“这个函数只能在主程序中使用”,想来也合理,毕竟函数中变量的内存不是一直有.“temporary函数和!Null对变量、数组、指针、结构体、对象等都有效”(是不是说delvar作用对象有局限?)
第一法宝:!Null
对不需要的变量直接赋系统变量!Null,简单粗暴
IDL> a=1
IDL> a=!null
IDL> a
!NULL

密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2017-4-15 18:27:34 | 显示全部楼层
楼主这是开挂了吗
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2017-4-15 18:57:55 | 显示全部楼层
吴东佑 发表于 2017-4-15 18:27
楼主这是开挂了吗

快毕业了,把知识整理一下,造福后人
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2017-4-15 22:16:34 | 显示全部楼层
可以的,多谢楼主
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

快速回复 返回顶部 返回列表