首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

种的对象何时释放

2013-01-05 
类的对象何时释放?本帖最后由 superfans98 于 2012-10-30 20:06:56 编辑刚才在群里有位高手说,在对象触发

类的对象何时释放?
本帖最后由 superfans98 于 2012-10-30 20:06:56 编辑 刚才在群里有位高手说,在对象触发的事件里销毁对象不安全。那到底应该在哪里释放。我希望并不是在程序退出时释放,而是实时释放。即它触发事件后我不需要它了,然后就释放它。例如以下代码:

类的代码:
Public Event test()

Public Sub a()
    RaiseEvent test
End Sub

窗体代码:
Dim WithEvents k As Class1

Private Sub Command1_Click()
    Set k = New Class1
    k.a
End Sub

Private Sub k_test()
    MsgBox "d"
    '假如这个时候,我已经不再需要k这个对象了,能否在下面释放?如果不能,那我想在触发test事件后就释放它,因为我已经不再需要它了,应该怎么释放?
    Set k = Nothing
End Sub

[解决办法]
系统有回收机制,对于程序而言你设置为Nothing就等于告诉系统,这块内存空间你可以回收了。至于系统怎么办,在下不清楚了。

值得说明的是,每个生命并实例化的对象都最好显式的设置为Nothing,不然可能会导致内存泄漏
[解决办法]
一般是“谁创建,谁释放”,在同一作用域内创建和释放,如同一过程内,过程的开始创建,就过程结尾释放;同一窗体内,窗体加载时创建,就窗体卸载时释放。这样做的好处是你可以清楚地知道对象什么时候可用,什么时候不可用。
当然,不在同一作用域内创建和释放也可以,但你必须清楚地知道对象什么时候可用,什么时候不可用,特别是当模块很多时!所谓“不安全”多半就是人很难记住在什么地方new了,在什么=nothing

热点排行