Delphi Create(nil), Create(self), Create(Application)的区别

最近的项目中经常在程序中动态创建控件,势必用到Create。

但是随之而来的问题就是动态创建的控件是否可以正确的释放内存?

以及 Create(nil), Create(self), Create(Application)的区别又是什么呢?

Create(nil);//需要自己释放

Create(Self);//当Self释放时自动触发释放

Create(Application);//当Application释放时自动释放

Create(nil);//这种方式创建的对象要自己手工进行FREE才会回收内存
//其他很多内存泄漏就是忘了手工释放内存

Create(Self);//由self对象负责释放创建的对象,只要self没有释放掉
//这个对象的内存就不会被释入掉,除程序员手工进行释放,他会触发很多事件。
//性能不是很好

Create(Application);
Create(Application.owner); //这两就是把self具体对象罢了

原文地址:https://www.cnblogs.com/jijm123/p/10668061.html

时间: 2024-10-11 16:15:49

Delphi Create(nil), Create(self), Create(Application)的区别的相关文章

[原创] Delphi Create(Application) 和 Create(nil) 的区别

Delphi Create(Application) 和 Create(nil) 的区别: 例如: Form1:=TForm1.Create(Application); Form1:=TForm1.Create(nil): Create(Application)  :程序创建时会将对象添加到属主对象的组件(TComponent)列表中,当属主对象销毁时首先查看并销毁属主对象的从属对象,即当Application对象释放时会自动释放从属对象. 这里又要衍生一个概念及应用程序对象即Applicati

[Hive - LanguageManual] Create/Drop/Alter Database Create/Drop/Truncate Table

Hive Data Definition Language Hive Data Definition Language Overview Create/Drop/Alter Database Create/Drop/Truncate Table Alter Table/Partition/Column Create/Drop/Alter View Create/Drop/Alter Index Create/Drop Function Create/Drop/Grant/Revoke Roles

[Hive - LanguageManual] Create/Drop/Alter View Create/Drop/Alter Index Create/Drop Function

Create/Drop/Alter View Create View Drop View Alter View Properties Alter View As Select Version information Icon View support is only available in Hive 0.6 and later. Create View CREATE VIEW [IF NOT EXISTS] view_name [(column_name [COMMENT column_com

通过dbcp链接池对数据库操作报 Cannot create PoolableConnectionFactory (Could not create connection to database server. Attempted reconnect 3 times. Giving up.)--解决方案

org.springframework.transaction.CannotCreateTransactionException: Could not open JDBC Connection for transaction; nested exception is java.sql.SQLException: Cannot create PoolableConnectionFactory (Could not create connection to database server. Atte

jmeter连接mysql数据库报错Cannot create PoolableConnectionFactory (Could not create connection to database server.)

今天在学习jmeter的jdbc取样器,发现在配置完JDBC Connection Configuration和JDBC Request后,点击运行.在查看结果树中显示响应数据: Cannot create PoolableConnectionFactory (Could not create connection to database server.) 尝试多种方法后发现是由于mysql驱动版本太低导致. 报错时,我的jmeter版本是3.1,jdk版本是1.8,mysql版本是8.0.11

Object.create(null)、Object.create({})、{} 三者创建对象的区别

参考 1.先看看我们经常使用的{}创建的对象是什么样子的: var o = {a:1}; console.log(o) 从上图可以看到,新创建的对象继承了Object自身的方法,如hasOwnProperty.toString等,在新对象上可以直接使用. 2.再看看使用Object.create()创建对象: var o = Object.create(null,{ a:{ writable:true, configurable:true, value:'1' } }) console.log(

Could not open JDBC Connection for transaction; nested exception is org.apache.commons.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory (Could not create connection to database server.

报错信息:Could not open JDBC Connection for transaction; nested exception is org.apache.commons.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory (Could not create connection to database server.) 问题来源mysql-connecter-java 版本过低 如果你mysql的版本是m

create table as 和create table like的区别

create table as 和create table like的区别 对于MySQL的复制相同表结构方法,有create table as 和create table like 两种,区别是什么呢? /* -- 没有开启gtid的情况下,不拷贝数据,只创建一模一样的表结构,包括索引约束等,结合insert语句可以实现复制一个表的结构和数据的目的 create table tbl_test_bak like tbl_test; insert into tbl_test_bak select

实验:实现多实例 、数据库的create和alter、create表

多实例:软件程序运行了多次,规划:第一个端口在" 3306 ",第二个端口在" 3307 ",第三个端口在" 3308 ",在对外提供服务时,就感觉是三个mysql服务器一样.(此实验与mariadb的版本无关)1.安装mariadb,[root@centos7 ~]# yum install mariadbLoaded plugins: fastestmirror, langpacksLoading mirror speeds from cac