请问个基本问题,类的释放

xsf2516624 2009-08-15 10:36:31

type
TMyType =class(TObject)
public
vmS: TMemoryStream;
constructor Create;
destructor Destroy; override;
procedure CreateFS();
end;

{ TMyType }

constructor TMyType.Create;
begin
vmS:=TMemoryStream.Create;
end;

procedure TMyType.CreateFS;
begin
vmS.LoadFromFile('1.exe');
end;

destructor TMyType.Destroy;
begin
//vmS.Free;
end;

procedure TForm1.Button1Click(Sender: TObject);
VAR
vMT: TMyType;
begin
vMT:= TMyType.Create;
vMT.CreateFS;
vMT.Free;//这里进行释放的时候请问在 TMyType.Create;创建的内存流会不会自动给释放?
end;
...全文
116 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
AsheBin 2009-08-24
  • 打赏
  • 举报
回复
我平时的做法是:
需要绑定到控件或者其他对象上的(也就是有宿主的),不手动释放,宿主会处理。
宿主为nil的临时对象,一般放在try...finally...end;里面,随用随释放。
那种不需要宿主的,也就是Create后面没有括号(即不写Owner,也不写Nil)的,我一般也释放了,好像没出现什么问题。
请各位高手指教!
xsf2516624 2009-08-24
  • 打赏
  • 举报
回复
谢谢各位朋友了,还是给他释放好
wintergoes 2009-08-24
  • 打赏
  • 举报
回复
vmS.Free;
这句话是必须要用的
TMyType的实例对象在释放时不会自动释放类里的对象的
当然,进程正常关闭的话会把所有的资源都释放掉,但是如果你的TMyType对象在一个进程的某次运行中多次创建\销毁,就会造成内存泄漏,有可能把你的程序的内存全部用光,而导致进程死掉
林石公 2009-08-24
  • 打赏
  • 举报
回复
好像各执一辞,别教坏别人啊
楼主的析构函数中内存流的free一句是注释掉的
回答要慎重啊
diecode 2009-08-24
  • 打赏
  • 举报
回复

需要自己释放
我全是自己释放的
Harryfin 2009-08-22
  • 打赏
  • 举报
回复
不会吧... 如果会的话,基本上即使很不讲究的人写的程序都不怎么会内存泄漏了。

宿主不宿主其实是一样的。所谓宿主,只不过是对象设计时用了一定的模式,能够在宿主类释放的时候,由宿主类主动通知从属类进行释放而已。如果按你这种说法,我宿主类不通知从属类进行释放,是不是也不会内存泄漏呢?
火龙岛主 2009-08-22
  • 打赏
  • 举报
回复
procedure TForm1.Button1Click(Sender: TObject);
VAR
vMT: TMyType;
begin
vMT:= TMyType.Create;
vMT.CreateFS;
vMT.Free;//这里进行释放的时候请问在 TMyType.Create;创建的内存流会不会自动给释放? //会的, 但也只有这种没有宿主的情况可以
end;
Harryfin 2009-08-22
  • 打赏
  • 举报
回复
当然是不会了...
ok1411 2009-08-22
  • 打赏
  • 举报
回复
不太清楚,写一下总没错的
dinoalex 2009-08-22
  • 打赏
  • 举报
回复
有构建create,一般就有释构
lyhoo163 2009-08-22
  • 打赏
  • 举报
回复
TMyType是类,不是对象(类的实例),delphi编译器会自动释放它。
kampan 2009-08-15
  • 打赏
  • 举报
回复
不会,需手动Free释放; 动态数组、字符串可以自动释放
Seamour 2009-08-15
  • 打赏
  • 举报
回复
当然不会
bdmh 2009-08-15
  • 打赏
  • 举报
回复
系统会自己回收,不过最好不要让系统做这些事情,还是多些一句话吧

16,748

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧