社区
Delphi
帖子详情
问一个有关对象创建和释放的问题
bambooshzh
2004-01-03 12:27:22
在delphi中,我自已定义了一个类TMy,然后声明一个该类的对象Mya,
用Mya:=TMy.Create来实例化,使用完然后用Mya.Free释放掉该对象,
我的问题是一定要用Create和Free方法手动来这样做吗?有没有自动来实例化与清理的方法,象JAVA一样?
不知道问的对不对,新手,请多指教。
...全文
43
10
打赏
收藏
问一个有关对象创建和释放的问题
在delphi中,我自已定义了一个类TMy,然后声明一个该类的对象Mya, 用Mya:=TMy.Create来实例化,使用完然后用Mya.Free释放掉该对象, 我的问题是一定要用Create和Free方法手动来这样做吗?有没有自动来实例化与清理的方法,象JAVA一样? 不知道问的对不对,新手,请多指教。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
10 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
sailerbai
2004-01-07
打赏
举报
回复
Delphi中没有这样的一个垃圾收集的功能,自己控制也很方便啊!
bambooshzh
2004-01-07
打赏
举报
回复
谢谢上面各位的教导,希望还有更多的高手来帮我。
linuxyf
2004-01-04
打赏
举报
回复
组件有拥有其他组件的性能。一个组件的拥有者是由它的Owner属性指定的。如果一个组件拥有其他组件,则当它被析构时,它负责释放它拥有的组件。通常,窗口拥有在它上面出现的所有组件。
如果你在窗口设计时把组件放置在窗口上,窗口将自动成为组件的拥有者。当你在运行期间创建一个组件时,必须向组件的Create构造器传递组件的拥有关系;它被设置为新组件的Owner属性。下面一行语句表示了如何向TButton.Create( )构造器传递窗口隐含的参数Self。这样使窗口成为新创建组件的拥有者:
Mybutton:=TButton.create(self);
当窗口被析构时,与MyButton有关的TButton实例也会被析构。这是在VCL内部处理的。实质上,窗口再次通过Components数组属性遍历组件并析构它们。
通过传递nil给组件的Create()方法,可以创建一个不具备拥有者的组件。不过,如果这样做了,编程时你需要负责组件的删除。下列代码显示了这个技术:
Mytable:=TTable.create(nil)
try
....
finally
Mytable.free;
end;
要使用这个技术,应当用一个try. . . finally块来确保出现异常时释放所分配的资源。你不应使用这个技术,除非特殊情况—不能给组件指定拥有者。
另一个有关拥有关系的属性是Components属性。Components属性是一个数组属性,包含一个组件所拥有的全部组件的列表。例如,要遍历一个窗口的所有组件以显示它们的类名称,需要执行下列代码:
var
i:integer;
begin
for i:=0 to ComponentCount-1 do
showmessage(Components[i].classname);
end;
显然,你还可以针对这些组件执行更有意义的操作。这里只是简单地说明这一技术。
抱朴守拙
2004-01-04
打赏
举报
回复
而
Application.CreateForm(TfrmGoods,frmGoods);
frmGoods会在程序关闭时自动释放。
抱朴守拙
2004-01-04
打赏
举报
回复
有些是不会释放的,例如:S := TStrings.Create;S就不会自动释放。
bambooshzh
2004-01-04
打赏
举报
回复
create有点像是JAVA中的new,如果不做Free的话,在退出程序的时候,会不会自动释放所有使用过的对像呢?
cll007
2004-01-03
打赏
举报
回复
没听过自动实例化,不过自动清理还是有
yuzhan
2004-01-03
打赏
举报
回复
Create和Free已经很好了,过度的自动化操作也许不见得更好吧?
chvin
2004-01-03
打赏
举报
回复
Java不是也要构建和析构吗?
fj218
2004-01-03
打赏
举报
回复
手动用Create和Free有什么麻烦吗?
HTML5 CSS3 :无插件拖拽上传图片实例源码
代码为博客实例代码:http://blog.csdn.net/lmj623565791/article/details/31513065 有
问
题
博客中留言
【C++】动态内存管理 ③ ( C++
对象
的动态
创建
和
释放
| new 运算符 为类
对象
分配内存 | delete 运算符
释放
对象
内存 )
一、C++
对象
的动态
创建
和
释放
1、C 语言
对象
的动态
创建
和
释放
的方式 2、C++ 语言
对象
的动态
创建
和
释放
的方式 二、代码示例 -
对象
的动态
创建
和
释放
C++类
对象
的
创建
与
释放
过程
C++类
对象
的
创建
与
释放
过程类
对象
的
创建
过程类
对象
的
释放
过程析构函数缺省析构函数 类
对象
的
创建
过程 1、分配类所需要的空间,无论是栈还是堆。 2、传递实参调用构造函数,完成如下任务: 1、根据继承表依次调用父类的构造函数。 2、根据成员变量的顺序依次调用成员变量的构造函数。 3、执行构造函数体中的代码。 注意:执行构造函数的代码是整个构造函数的最后一步,要保证构造函数代码所需要的一切资源和先决条件...
C++中
对象
创建
与
释放
创建
对象
有以下四种形式: #include <iostream> using namespace std; class A{ private: int i; public: A(){ cout<<"调用没有参数的构造函数"<<endl; } A(int a):i(a){ cout<<"调用有
一个
参数的构造函数"<<endl; } ~A(){cout<<"成员变量为:"<<i<<"
C++类
对象
的
创建
与
释放
过程详解
类的定义与实例化 类
对象
的
创建
方法 类
对象
的
创建
过程 类
对象
的
释放
过程 析构函数 缺省析构函数 类的定义与实例化 类
对象
的
创建
方法 1、在栈上
创建
类名
对象
; // 无参
创建
方法 类名
对象
(实参); // 有参
创建
方法 2、在堆上
创建
类名*
对象
指针 = new 类名; 类名*
对象
指针 = new 类名(); 3、
创建
多个
对象
类名
对象
= {(实参),(实参),(实参)}; 类名*
对象
指针 = new 类名(n){类名(实参),类名(实参),类名(实参)}; 注意: ...
Delphi
5,930
社区成员
262,938
社区内容
发帖
与我相关
我的任务
Delphi
Delphi 开发及应用
复制链接
扫一扫
分享
社区描述
Delphi 开发及应用
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章