为何定义窗体变量时,用dim frm as form1时,可以用set frm=nothing释放,但是用dim frm as new form1时,总是无法用 set frm=nothing 释放
-----------------------------
如果:
dim frm as new form1
则我如果用 set frm=nothing后,再判断
if frm is nothing 则不会是nothing的状态。但是 dim frm as form1
却可以用 set frm=nothing的方法真正释放。
然后frm确实是nothing的状态。这是为什么呢?
举例说吧,如果定义一个窗体级的对象。那么只要用到new,就不能在窗体中将这个对象释放,是这样吗?
-----------------------------
如果:
dim frm as new form1
则我如果用 set frm=nothing后,再判断
if frm is nothing 则不会是nothing的状态。但是 dim frm as form1
却可以用 set frm=nothing的方法真正释放。
然后frm确实是nothing的状态。这是为什么呢?
举例说吧,如果定义一个窗体级的对象。那么只要用到new,就不能在窗体中将这个对象释放,是这样吗?
解决方案 »
- 【分享】使用数组快速填充Excel
- VB显示扩展的ASC码128-255字符
- vb学习“使用不定数量的参数”时遇到的问题
- 大家好!请问在VB中怎么引用VBA?(新手小季)
- 关于vb操作Access数据库时,变量的转换问题
- 关于split
- 谁知道好的论坛?关于技术方面的,图书下载.软件下载之类任何都可以..我一定给高分.比如精品论坛.
- 为什么我在access中使用like模糊查询得不到结果,反而有时会出现"内存溢出"得错误?
- Visual Basic 插件开发人员指南(Gene Swartzfager)附带的CD有多大
- vb开发cad技术之vb链接cad
- Set App = getObject在功能模块的应用。
- 请教事件过程可以在其他事件过程中调用吗?
定义一个变量,其类型是form1,并且frm不指向任何一个对象。dim frm as new form1
新建一个form1对象,然后定义一个变量,其类型是form1,并且指向刚建立的对象
dim frm as new form1
定义的对象,无法用
set frm=nothing的方法使用变成 nothing 状态。但是用
dim frm as form1
set frm=new from1
却可以用 set frm=nothing的方法变成 nothing 状态。谢谢。
上一次,你已经问过了,我也回答了,回答不是太好。
这次的问题,我的想法是:1. dim frm as new form1 '是编译器在栈里预先分配的一段内存来装载实例,你不能释放,只能end sub后自动清栈
2. Dim frm As Form1 '由编译器在栈里预先分配定义一个dispatch指针
Set frm = New Form1 '由用户在堆里动态地分配一块内存装载form1实例
Set frm = Nothing '由用户释放那一块内存,并且frm指向Null空指针
不知对不对,我也不是很确定,如果是这样就好理解了。
好象
dim frm as new form1
是在栈中分配,而
dim frm as form1
则是在堆中分配的。 在堆中分配,当然可以灵活的创建是销毁,这个理解。
但是在栈中分配是为何就无法销毁呢?是不是出了其作用域,就自动销毁呀?
我的理解对吗?