关于使用动态数组和释放内存的问题???急盼高手援助(50分)

  • 主题发起人 主题发起人 wb_l
  • 开始时间 开始时间
W

wb_l

Unregistered / Unconfirmed
GUEST, unregistred user!
我的程序如下:
在按钮的click事件中给使用了动态数组(全局变量),第一次触发该事件时程序能够正常
运行,可是第二次触发该事件时程序出现错误:“insufficient memory 。。。
(后面忘了)”,该问题如何解决??
我已经在click时间里使用了R:=nil;(R代表动态数组)

 
nil 当然不行
在用完数组时:
要用 :
FreeMem(@R); //R前一定要有 '@'
要不用:
FreeAndNil(R);试试

 
释放动态数据的内存用Nil应该是可以的。
见Delphi的Help:
Dynamic-array variables are implicitly pointers and are managed by the same
reference-counting technique used for long strings. To deallocate a dynamic
array, assign nil to a variable that references the array or pass the
variable to Finalize; either of these methods disposes of the array,
provided there are no other references to it.
Dynamic arrays of length 0 have the value nil. Do not apply the dereference
operator (^) to a dynamic-array variable or pass it to the New or
Dispose procedure.
出错的原因应该不在这里,你将整个OnClick事件的代码贴出来看看。
 
如果click里面使用了R:=nil,那么下一次用的时候
要重新GetMem().
建议最好不要是用全局变量.
可以把源码贴出来看看.
 
两种处理 :
R?:=nil;
or
SetLength(R,0);

你既然释放了,可能是其他原因了。
 
[?][^][:(!][:(][:(][8D]
[:)]​
 
用nil或SetLenth应该没问题,你的程序有问题吧。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部