用SetLength分配的动态数组,在程序结束时需要人工释放内存吗? ( 积分: 30 )

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

ynduanlian

Unregistered / Unconfirmed
GUEST, unregistred user!
如果需要,如何释放?
不知为什么我的程序经常性但又很随机的报内存错误?
 
不需要,是其他地方报错吧。
 
同意楼上说的,你检查一下自己程序
 
我觉得要释放,用Setlength(xxx,0)就可以了,不释放会产生内存泄漏。
 
看你setlength的东西后面有没有new
 
动态数组里存的是个纪录:
TMusic=Record
Name: String;
URL: String;
End;

var
MEs: Array of TMusic;


……
SetLength(Mes,3);

Mes[0].Name:='A8音乐';
Mes[0].URL:='http://www.a8.com';

Mes[1].URL:='http://music.yahoo.com.cn';
Mes[1].Name:='雅虎音乐';

Mes[2].Name:='百度音乐';
Mes[2].URL:='http://mp3.baidu.com';
 
个人觉得MEs会在你整个程序结束时自动释放
楼主不妨哟个指针结合链表 不久没这个担心了??
 
这种方式不会释放,可以:

var
_P:^Mes;

_P:=new(Mes);
_P^.Name:='A8音乐';
_P^.URL:='http://www.a8.com';
 
多人接受答案了。
 
后退
顶部