分享

09简单聊一下:VBA到底应不应该手工释放变量内存?

 asaser 2022-03-29

HI,大家好,我是星光。

在VBA的世界里,有很多问题都存在两种截然对立的观点,比如:是否应该强制声明变量?是否应该手工释放变量?

关于第1个问题,咱们之前聊过了,这里不再重复说明;最近又常有朋友询问第2个问题:

VBA是否应该手工释放变量?

常用释放变量语句....

释放数组:Erase arr释放单元格对象:Set rng = Nothing释放类库引用:Set dict = Nothing……

需要吗?不需要吗?不需要吗?需要吗?

图片

我们这里不谈VBA自身的变量释放机制,它靠不靠谱很难说。但尽管如此,需不需要手工释放变量都是一个相对的概念:这是由变量大小和你电脑的性能决定的。

假设你的电脑内存有10桶水那么大,而你的变量只是一碗水,你装了一碗水,把这碗水倒掉,再装另外一碗水——就没意义。你那几碗水相比10桶的内存而言和一碗水其实没差别,而反复操作碗的过程,却在实际上拉低了代码的运行效率,摊手,对不对?

图片

但是,假如你的变量很大,是按桶来算的,你上来就装了9桶水,然后又要装2桶水。如果前面9桶水没倒掉,不但代码运算效率受影响,甚至还会内存溢出。耸肩,是不是?

图片

把碗和桶的水倒掉就是在释放变量所占的内存,因此不同情况下的最优选择就不一样。

打个响指,只能说,对于大部分、小脚本性质的VBA代码来说,变量的大小也就是几碗水,现在电脑的性能又远胜往昔,从运算效率角度出发,反复手工释放变量就真不是好事。你觉得你是为了电脑好,让它腾出内存空间,全心全意为你服务,但电脑觉得你为了一碗水折腾来折腾去,真TM好烦啊,估计恨不得对你漏下电。

曾经有个教员反复教导我们说,一切问题都要从实际出发,具体问题要具体分析……可不就这么回事吗?——嘿!字数凑够原创标准了,挥手作别,下期再见吧。

图片

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多