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

请问创建类内存有关问题

2012-03-03 
请教创建类内存问题小弟以前写VB6的,最近用VB2008遇到个问题,请教下如果我定义了一个类,作为子函数的返回

请教创建类内存问题
小弟以前写VB6的,最近用VB2008遇到个问题,请教下

如果我定义了一个类,作为子函数的返回值,在主程序中循环调用子函数的话,最后会不会内存溢出??,代码没什么功能意义,我只想知道,是否要delete掉new对象的内存,系统是否自己释放了空间??如果是,是在什么时候释放的??貌似C#不用自己delete

VB.NET code
    Function GetHEX() As ReHEX        Dim R_HEX As New ReHEX        R_HEX.HEX_H = 100        Return R_HEX    End FunctionPublic Class ReHEX    Public HEX_H As IntegerEnd Class


[解决办法]
C#和java有内存回收机制,要溢出是比较难的。
[解决办法]
VB.net也会自动回收,但是要等一会儿系统检测到所用对象没用了才会自动回收
所以你最好在循环中不用的时候加上
R_HEX = nothing

有可能的话最好在ReHEX类的实现IDisposable接口,把类里需要释放的代码写在Dispose方法里

循环里释放时调用下面两句代码
R_HEX.Dispose()
R_HEX = nothing

[解决办法]
Dim temp,temp1 As ReHEX
temp=GetHEX()
temp1=GetHEX()
'这句话调用完毕是不是,子函数中的R_HEX就自动释放了?

'我只要在主程序中调用
temp.IDispose()
temp = Nothing
temp1.IDispose()
temp1 = Nothing


上面代码就可以了,子函数你要把对象返回出去,所以子函数内部释放不了,只能在外面释放

热点排行