基本问题吧?动态数组该不该自己释放内存?(100分)

  • 主题发起人 主题发起人 ydfq
  • 开始时间 开始时间
Y

ydfq

Unregistered / Unconfirmed
GUEST, unregistred user!
我定义了几个结构,内有动态数组,例如:
Type
TStruA=record
...
end;
TStrucB=record
...
arA:array of TStrucA;
end;
TStrucC=record
...
arB:array of TStrucB;
end

var
arC:array of TStrucC;
程序中重置数组后,结束后是否该释放?如果要释放的话,就太麻烦了:(
敬请指教。
 
需要手工释放
 
程序结束后,系统会自动释放内存的,但不能被马上从新利用。不过最好自己释放。
 
arc:=nil 就因该可以了
 
将动态数组设为nil后,系统会自动释放动态数据所占用的内存。
 

我觉得TList更好用。
 
那……那……太麻烦了吧?没有什么简单的方法吗?
是否是 一个循环套一个循环的释放?
arA:=nil 就释放了吧?
呵呵,基本功还是不扎实啊:(
 
delphi的动态数组不需要手工释放,从数组存放原理上看,重置为nil,本身就释放了空间
 
看看,各位的回答都不太一样,我也是搞不太清楚才问的:)
如果要释放的话,只释放arC:=nil可以吗?不是太清楚系统的原理。
我怕不释放会有内存泄漏:)
 
我知道动态数组只要置空就释放,但在这种链接的……我就搞不太清楚了:(
 
常规动态数组,我从来就是自动释放,未见异常;
只是要重置该动态数组的时候,置为nil,重新使用
delphi有内存泄漏的问题,不过是在某些vcl组件,呵呵
 
常规的我也没有管它:)
这种情况我没有想明白:(
 
将动态数组设为nil,其实也只就是使数组占用的内存减到了最少,在系统管理中,当你新
一个数组时,windows会给这个数组分配一定的空间,并记录下这个数组,当这个数组运行
结束时系统会自动释放这段空间。
你可以不用管它,也可以在程序未给他来个nil,这取决于你自己啦

 
我看到很多老外这样做的!
在最后,将动态数组中置为0
SetLenght(A,0)

这样可能是心里安慰吧!Delphi应该自己会管理释放的!
 
本着严谨起见,是应该手工释放的。
但几个嵌套在一起,要释放就要来个n重循环,是否是太麻烦了呢?
如果只是否最外的一个动态数组,其他的能自动释放吗?这是delphi还是操作系统的管理?
 
不需要手动释放,因为Delhpi中动态数组、string类型、variant、olevariant都属于
自释放内存类型,不需要用户管的
 
多人接受答案了。
 
后退
顶部