社区
Delphi
帖子详情
探究:Delphi中的对象指针是否可用
musicwind
2001-08-07 08:35:27
内容参见:http://www.csdn.net/develop/read_article.asp?id=9508
...全文
213
20
打赏
收藏
探究:Delphi中的对象指针是否可用
内容参见:http://www.csdn.net/develop/read_article.asp?id=9508
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
20 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
musicwind
2001-08-30
打赏
举报
回复
其实这个问题还是蛮有意思的,所以继续关注
musicwind
2001-08-30
打赏
举报
回复
关注一下这篇
《Object Pascal:从对象指针谈起》
http://www.csdn.net/develop/read_article.asp?id=10124
musicwind
2001-08-30
打赏
举报
回复
谢谢 TommyTong(童童) 的回复。
对于这部分的内容,我真的也不太清楚,去找些书看看再来讨论。
墨梅无痕
2001-08-11
打赏
举报
回复
我不同意“类信息为静态”的说法,如果相通类的所有实例全部释放后类信息依然存在,那么如果该对象到程序结束都不再有实例使用,那就应该释放调,否则绝对浪费内存空间。我觉得类信息应该是动态的,就如同COM一样。
关键是对IDL不熟悉呀,我想VCL应该是使用IDL实现的,可惜手头找不到有关IDL的资料。
musicwind
2001-08-10
打赏
举报
回复
请大家帮忙提前。
musicwind
2001-08-10
打赏
举报
回复
Up,继续讨论,童童你在吗?
musicwind
2001-08-10
打赏
举报
回复
to TommyTong:
对于相同的RTTI,我认为,Delphi应当是所有的对象实例共用一个信息的。
否则,岂不浪费内存?
并且我觉得即使所有相同类的实例全部释放后,该类型信息依然存在,因为它是静态的,程序运行后,RTTI就放在数据段里面,等待调用。
墨梅无痕
2001-08-09
打赏
举报
回复
好像有点别扭!?????
墨梅无痕
2001-08-09
打赏
举报
回复
这几天我在考虑另外一个问题,即关于对象的类信息和他的实例信息的内存结构及存储问题。
现在可以确定Free方法只是释放了对象实例的内存空间,而没有释放实例指针所指向的类信息的内存空间。于是,我想到,是否VCL在创建多个实例时采用了共享类信息的方法,再通过例如引用计数的方法将指针指向不同的实例,即类似于COM的单对象多接口的结构。
如果是这样,那么使用FreeAndNil方法后再使用Create方法是否会开辟新的类信息的存储空间而造成内存空间的浪费呢?
chechy
2001-08-08
打赏
举报
回复
我以前在Borland的新闻组看见有一个人写过这种测试函数(未被验证过)。你可以去google搜索一下。
现在有FreeAndNil函数,指针在没用的情况下清零本来就是一个非常好的编程习惯。(好像许多书中都提到过)
musicwind
2001-08-08
打赏
举报
回复
to Nicrosoft:
我想你误解了我的意思了,我说的类方法指得是方法本身是类方法Class Method,而不是指方法作为一个函数返回值的类型。你指的“类方法”或许称为类类型,比较可取。
同意Free以后赋值为nil,这是个好习惯。
musicwind
2001-08-08
打赏
举报
回复
Up!希望大家一起来关注!
墨梅无痕
2001-08-07
打赏
举报
回复
to Nicrosoft:
多谢夸奖。
墨梅无痕
2001-08-07
打赏
举报
回复
另外,在不同的操作系统下,比如Windows 98 和Windows NT,如果不执行
Object=NIL;
语句,那么可能造成对象的表现的差异。
我曾经对一个AboutBox的Form的非客户区进行绘制,如果使用
Ojbect=NIL;
那么在以上两种操作系统下,该Form的表现是完全一样的,若不使用,在98下会出现窗口的非客户区时而绘制,时而不绘制的结果。
Nicrosoft
2001-08-07
打赏
举报
回复
to 童童:
Object.Free;
Object := nil;
这是一种非常好的习惯。
墨梅无痕
2001-08-07
打赏
举报
回复
我也知道Free、Assigned()函数的问题,所以我总是在Object。Free后使用
Object= NIL;
但我想,既然Borland在释放对象实例的内存空间后,依然保留它的类信息,必然有其他的需要。
lanren_me
2001-08-07
打赏
举报
回复
可以。定义对就行。
Nicrosoft
2001-08-07
打赏
举报
回复
——这个ClassType方法并不是真正的对象方法,而颇有些类方法的味道。
ClassType返回的本身就是TClass。也就是类方法
musicwind
2001-08-07
打赏
举报
回复
这是一个值的讨论的问题,请发表你的看法。
musicwind
2001-08-07
打赏
举报
回复
欢迎大家在此讨论。
探究
:如何判断
Delphi
中
的
对象
指针
是否
可用
Musicwind于2004年6月郑重声明:以下内容纯属胡言乱语,荒谬之至!相关内容于csdn程序员杂志某期增刊发表,实属误人子弟之不幸!在此向广大读者致谦!
探究
:如何判断
Delphi
中
的
对象
指针
是否
可用
作者: Musicwind? 创建时间:2001-08-07 近日,在网上看到有网友问曰:如何确定一个
对象
指针
是否
可用
?也就是说,如何确定一个
对象
指针
是否
指向一个真正
可用
的
对象
实例?
批判,再批判!关于“
探究
:如何判断
Delphi
中
的
对象
指针
是否
可用
”!
01年本人发表了一篇文章,名为“
探究
:如何判断
Delphi
中
的
对象
指针
是否
可用
”。在文
中
,提出了采用对已经释放的
对象
进行有选择的属性/方法的访问或调用,然后以
是否
出现异常来判断其
对象
指针
是否
可用
。 这种方法荒谬之极!我想以如下程序的运行现象来帮助各位做出明智的判断。 unit Unit1; interface uses Windows, Messages, SysUtils
批判,再批判!关于“
探究
:如何判断
Delphi
中
的
对象
指
<script type="text/javascript"
Delphi
之 第三课 详解数据类型
delphi
中
声明数据类型用关键字Var,关键字Var可以在很多地方使用,如放在函数或过程的开始部分的叫局部变量。放在单元
中
的叫全局变量。
delphi
中
数据类型分为三大类:即有序数据类型,实数类型和字符类型。在细分可以分成。整数类型,布尔类型,字符类型,实数类型,日期和时间类型,自定义数据类型。等等。现在具体讲解各种类型。 其
中
有序数据类型,布尔类型和字符类型按取值范围划分 大小 有...
【转】
DELPHI
编写服务程序总结三--代码质量
一、提高
DELPHI
程序的稳定性
软件质量是一个产品的生命线,也是关乎软件开发者的幸福关键所在,每天有很多程序员都在因为软件质量而通宵达旦的加班,经常遇到的情况是刚发布的程序不停的发布补丁包。软件质量就像一个噩梦一样,不停的在后面追赶着程序员,让他们疲于奔命,甚至于在程序员
中
流传着一句话:“生命不息,BUG不止”。
今天我们要
探究
的不是哪些可以重现的BUG,我们把哪些可以重现的BUG不定义为BUG,只有哪些不可重现的BUG,会让你茶饭不思、坐立不安。我曾在一家公司开发服务器软
Delphi
5,386
社区成员
262,729
社区内容
发帖
与我相关
我的任务
Delphi
Delphi 开发及应用
复制链接
扫一扫
分享
社区描述
Delphi 开发及应用
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章