D dawnsong Unregistered / Unconfirmed GUEST, unregistred user! 2005-05-14 #3 var x:array of char; begin SetLength(x,1024); ... x :=nil;//释放 end;
M muhx Unregistered / Unconfirmed GUEST, unregistred user! 2005-05-14 #4 可以使用GetMem和FreeMem 注意FreeMem只能释放GetMem申请的内存 数组Application会自己管理内存 我都是SetLength(x,0)来处理 X只是一个指针,x:=nil;只是给指针赋值,但是并不能释放它原来指向的内存
可以使用GetMem和FreeMem 注意FreeMem只能释放GetMem申请的内存 数组Application会自己管理内存 我都是SetLength(x,0)来处理 X只是一个指针,x:=nil;只是给指针赋值,但是并不能释放它原来指向的内存
D dawnsong Unregistered / Unconfirmed GUEST, unregistred user! 2005-05-14 #5 x :=nil; 动态数组是自管理的,即便不写x :=nil,也会自动被释放的,不需要考虑
Z zjan521 Unregistered / Unconfirmed GUEST, unregistred user! 2005-05-15 #7 SetLength(x,0)是比较好的答案.也是我的选择
Y yf_zq Unregistered / Unconfirmed GUEST, unregistred user! 2005-05-21 #9 SetLength过程可以改变一个字符串或动态数组的大小.delphi已一个nil指针表示一个空的动态数组。delphi利用引用计数来维护一个动态的数组,若为0则释放内存空间。但是Delphi中呢对字符的类型有多种,处理的方式各不相同,你得查一下相关得资料来进一步得了解Delphi对字符是如何管理得。ansistring类型是不需要释放空间的.
SetLength过程可以改变一个字符串或动态数组的大小.delphi已一个nil指针表示一个空的动态数组。delphi利用引用计数来维护一个动态的数组,若为0则释放内存空间。但是Delphi中呢对字符的类型有多种,处理的方式各不相同,你得查一下相关得资料来进一步得了解Delphi对字符是如何管理得。ansistring类型是不需要释放空间的.
X xianguo Unregistered / Unconfirmed GUEST, unregistred user! 2005-05-21 #10 SetLength(a, 10); ... a := Nil;
D DJ6674 Unregistered / Unconfirmed GUEST, unregistred user! 2005-05-26 #12 用nil和SetLength(x,0)都可以. 我用的是nil. 但是,听高手说Delphi是自动释放内存的,不知道是不是真的?
J JohnSun2002 Unregistered / Unconfirmed GUEST, unregistred user! 2005-05-27 #14 SetLength(x,0)可以在窗体Free之前使内存占用减少, 当窗体Free时,不管你有没有维护array类型的内存, 程序都会自动释放掉array占用的内存, 就象定义了一个string,我们不会去管它释放不释放的。
SetLength(x,0)可以在窗体Free之前使内存占用减少, 当窗体Free时,不管你有没有维护array类型的内存, 程序都会自动释放掉array占用的内存, 就象定义了一个string,我们不会去管它释放不释放的。
J JiveBoy Unregistered / Unconfirmed GUEST, unregistred user! 2005-05-27 #15 如果动态数组的成员是对象,那么需要Create,也就需要手工Free吧?