Delphi中内存回收的疑惑。。。。。。 补充一下,刚才出了点问题,没法继续编辑了,下面的接上:或许delphi会有什么高招在释放S这个指针时捎带把它所指向的那一块内存也释放了,是这样, 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 Delphi的String类型可以自动回收内存,其原理和DLL差不多。其实你说的不完全对,String类型索引0市其引用计数,当为0时,Delphi会自动这片内存,不用你操心。索引-1(整数)才是其长度。 当引用计数为0时,Delphi会自动释放这片内存 既然索引0是其引用值,而索引-1又另有所用,那么是不是对一个String的引用次数不能大于255呢?还有,String允许的最大尺寸大于256,所以长度应该是索引-4开始才对,应该是-4,-3,-2,-1,这四个字节来表示string的长度。我的疑惑是,如果Dispose,那么Dispose居然需要检查所指向的数据块中是否包含string类型,如果包含,再作额外的处理,这样的Dispose是不是太复杂了,开销太大了些?那个String=^TStringHead的数据结构只是我的一个猜测而已,而且只是为了说明不能充分释放内存的原因,见笑了。我再看看delphi的源代码,看看有没有dispose的详细过程。送上5分,如果不够还可以加。谢谢参与讨论。 delphi如何建立圆形网格 谁知道如何用indy控件发送html格式的邮件?……………………………………在线等!! 真的没有办法吗?-----使图形加载更快,我想实现如下功能,请指教一下,用什么方法可以使它运行最快. 今天机器加内存256散分 Delphi我可以信赖吗????? 动态创建数组控件的问题 问一个简单的问题!用C++BUILDER写的控件能在delphi上用吗? socket的数据接收问题? 谁能告诉我DELPHI的背景图用什么最好? 关于动态数组的写入文件问题 在网页中输入时为什么有时会被“吃”标点符号? 征求各高手代码优化心得
我的疑惑是,如果Dispose,那么Dispose居然需要检查所指向的数据块中是否包含string类型,如果包含,再作额外的处理,这样的Dispose是不是太复杂了,开销太大了些?
那个String=^TStringHead的数据结构只是我的一个猜测而已,而且只是为了说明不能充分释放内存的原因,见笑了。我再看看delphi的源代码,看看有没有dispose的详细过程。
送上5分,如果不够还可以加。谢谢参与讨论。