简单问题,对象释放 会者不难 -希望说明下理由 在线等(100分)

  • 主题发起人 主题发起人 swt51cd
  • 开始时间 开始时间
S

swt51cd

Unregistered / Unconfirmed
GUEST, unregistred user!
function ********(C:某类型)
var
A:某类型;
begin
Try
A:=C;
.....
....
finally
我现在想释放 C对象 是否 应该 FreeAndNil(A);
FreeAndNil(A); ---我这样释放对吗(因为我没A:=某类型.Create )
end;
end;
 
如果类型不是简单类型,那么这样可以释放
 
如果类型不是简单类型,那么这样可以释放,需要说明的是
1.A,C都是指针,A := C;表示A指向C同一地址,所以使用FreeAndNil可以释放
2.没有必要使用FreeAndNil,因为A是局部变量,当函数调用结束就将指针A自动释放了,将它显式置空没有用处。
3.如果只是希望对C进行某些操作,没有必要定义局部变量A,可以改为
function ********(C:某类型)
begin
Try
.....
....
finally
我现在想释放 C对象 是否 ???/
C.Free;
end;
end;
4.如果像这个函数,你真的想释放
其实你释放了内存,但是C还是指向那段内存空间,如果外面调用C的一些方法就会报内存出错,可以修改成下面函数解决
function ********(var C:某类型)
begin
Try
.....
....
finally
我现在想释放 C对象 是否 ???/
FreeAndNil(C);
end;
end;
 
结束 问题
Johnny_du 20
muh 80
看看有没有哈,我第一次给分
 

Similar threads

D
回复
0
查看
1K
DelphiTeacher的专栏
D
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部