ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 名课 - Power BI数据分析与可视化实战 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
Python自动化办公应用大全 Excel 2021函数公式学习大典 Kutools for Office 套件发布 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
123
返回列表 发新帖
楼主: LIUZHU

[求助] 怎样正确释放存放了对象的数组变量

[复制链接]

TA的精华主题

TA的得分主题

发表于 2014-3-7 17:33 | 显示全部楼层
hiyou 发表于 2014-3-7 16:55
垃圾回收机制的依据,是"更强大的系统以一定的代价在后台代替手工自动回收内存对象",这不是没有代价的,但 ...

VB6 是直接运行在Windows 操作系统上的一种伪编译语言,VBA 则是以VB6 语法为基础运行在Office 系统上的一种解释型的脚本语言,它的根基是Office, 而Office 的实现技术是 .Com 技术。所以从这点上就看到了引用型变量,在内存管理上在堆区的对象实体是无法实现自动释放内存的,底层技术上就没有支持到这一点。无论采用什么方法,都是要人为干预的,即人为开,人为释放。

至于楼主提出的问题,如果这个Sub 是从头到尾,运行就结束了,随即退出excel 了。那么是否释放问题是不大的。一般随着app 的结束,分配的内存都会被释放掉。但是如果该过程是一个子过程会在程序运行中被多次调用甚至循环调用,如前面我的观点,那么仅仅Erase arr 是没有太大效果的。因为该数组元素存的不过是一个个引用,而对象实体都没有得到释放,仍然占据着内存空间。
当然在实际应用中Range 对象反复循环引用而导致内存泄漏的例子非常少,相对占的内存空间有限。我还记得有个网抓的程序,用httpxml 对象,抓一页就在堆里new 一个分配几M ,从不释放也不覆盖。最后系统崩溃。
这里发现我们玩VBA的对内存大都还真是没概念。


TA的精华主题

TA的得分主题

发表于 2014-3-7 19:22 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
hehex 发表于 2014-3-7 17:33
VB6 是直接运行在Windows 操作系统上的一种伪编译语言,VBA 则是以VB6 语法为基础运行在Office 系统上的一 ...

唔,怎么说呢。
要做过几年才知道,VB,VBA,解释语言(解释的本质是就脚本化,但用脚本这个词很多人就能接受了)未必是缺点,这其实不是单纯技术上去解释的,不过在诘难老派VB/VBA时技术上的内容更多。

VB98到VBA真正的优点是易学易上手,另一个很多人没有注意到的优势是,VBA是随宿主默认装上的,后一点比大部分技术优势都强
比如去给客户做个什么处理,人家的机上可以没有预装JAVA,可以没有.net,没有C,但只要是WINDOWS98以后,你基本可以找到SCRIPT的脚本体系——我是说JS和VBS,不用做批处理了,装了OFFICE的,那可以用VBA。搞WEBHTML么,客户正常一点肯定有IE的,其它的五花八门,可以有CHROME,可以有FIREWORK什么什么,国产的一看啊这是个山寨外壳IE内核,没问题,实在找不到IE被卸掉的,这个客户真是丧心病狂没办法了。

这也是早些年为什么开源体系(象LINUX)总是在战商业体系,结果还是不能胜出的原因吧。

TA的精华主题

TA的得分主题

发表于 2018-6-8 13:45 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2018-6-8 14:36 来自手机 | 显示全部楼层
本帖最后由 lrh788 于 2018-6-8 14:41 编辑

请教各位大神,我看了你们的诧述,大高深了,我这样理解在sub的变量使用中除了字典变量后期绑定需释放外其他如循环变量、数组变量等等均可不用释放语句,对吗?
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2025-12-25 06:12 , Processed in 0.017903 second(s), 7 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

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