用户操作
[即时聊天] [发私信] [加为好友]
stanleyxuID:Stanley_Xu
19322次访问,排名6517,好友0人,关注者1人。
http://getgosurf.com/
http://mmjd.com/
Stanley_Xu的文章
原创 15 篇
翻译 0 篇
转载 1 篇
评论 11 篇
stanleyxu的公告
声明:本专栏中出现的文章及图片,如有转载,敬请注明出处。若需商业用途,请与本人联系。订阅RSS

最近评论
linzhengqun:接口生命周期的管理是一件麻烦的事情,我的处理原则一般是:
如果外部模块不需要理会接口的生命周期,我宁可让接口没有引用计数。
如果外部模块(特别是跨语言合作编程)也需要控制接口的生命周期,那就老老实实让它实现引用计数吧。
hekulai:怎么没有写出解决方法呢,不厚道啊
pihome:不需要这么复杂,先Finalize(ARec)再FillChar就OK了
string实际上可以看成是一个带引用计数、内存分配自管理的"pchar",如PRCHacker所说,“FillChar 的作用是对一个内存块进行连续赋值”,FillChar只是把string这个"pchar"指针本身占用的内存清空了,而"pchar"指向的值不会自动释放的,string生命周期自管理的特性被……
PRCHacker:FillChar 的作用是对一个内存块进行连续赋值,内存泄漏出现在第二次调用 FillChar 的时候。经过调试后发现:如果把记录中的 string 字段改成 Pchar 或者删除,就不再有内存泄漏了。

这句话我不赞成,PChar用在记录体中,问题更多
linzhengqun:当然,私有的虚函数或动态函数也会出现在VMT中,不过这其实是很局限的,没有办法做到通用的访问私有函数。
文章分类
收藏
    相册
    友情链接
    CathyEagle 的专栏(RSS)
    GOSURF 浏览器
    存档
    订阅我的博客
    XML聚合  FeedSky

    DELPHI 学习心得记录学习 DELPHI 过程中收集到的各种心得和技巧。

    原创 Unicode 随想收藏

    最近 CodeGear 的工程师开始谈论[1][2][3][4][5] Delphi 全面支持 Unicode 的问题了。尽管这个是十年前的新闻,但对于 Delphi 的粉丝来说,迟到总比不到要强。本文是我对目前 Unicode 封装计划的一些看法。阅读全文>

    发表于 @ 2008年01月11日 06:48:00|评论(loading...)|收藏

    原创 查询接口小议收藏

    这篇文章除了要介绍一下接口的查询方法外,主要是要想交代一下我在具体使用接口中发现的一些问题。 (1) TInterfacedObject 由于会在 FRefCount=0 时释放掉对象实例,所以在使用上要格外小心。建议重新封装一个TInterfacedObjectEx,或者改用 TComponent。 (2) Supports 内部这行代码虽不知其用意,但显然是不安全的!尤其是在使用委托机制实现接口封装的时候。说明:我暂时无法证明去掉有问题的这行是否能保证不引入其它问题。阅读全文>

    发表于 @ 2007年08月02日 11:59:00|评论(loading...)|收藏

    原创 可能你不知道的内存泄漏收藏

    为了提高 string 的读写性能 Delphi 采用了 Copy-on-Write 机制进行内存管理。简单来说,在复制一个 string 时并不是真的在内存中把原来 string 的内容复制一份到另外一个地址,而是把新的 string 在内存映射表中指向同原 string 相同的位置,并且把那块内存的引用计数加一。这样就省去了复制字符串的时间。只有当 string 的内容发生变化的时候,才真正将改动的内容完整复制一份到新的地址,然后对原地址的引用计数减一,将新地址的引用计数设为一,最后将新 string 在内存映射表中指向这个新的位置。当某个字符串内存块的引用计数为零了,这块内存就可以被其它程序使用了。注意:所有常量 string 会在编译时率先分配内存,其引用计数不会在程序中变化,始终为-1。阅读全文>

    发表于 @ 2007年07月20日 02:53:00|评论(loading...)|收藏

    原创 你的单例足够单吗收藏

    假设 A 率先调用函数 Clipboard,局部变量 FClipboard会先进行实例化。在实例尚未完全创建完之前,如果 B 也尝试调用函数Clipboard,那么它也会去对 FClipboard 进行实例化。因为变量FClipboard此时依然为空指针。于是乎A、B分别创建了一个 TClipboard 的实例,其中的一个变成了一个内存泄漏。这种泄漏往往发送在构建函数需要耗费较长时间的情况下。如何将上述代码改成线程安全的呢?其实可以通过加入临界区处理来解决。阅读全文>

    发表于 @ 2007年05月11日 09:41:00|评论(loading...)|编辑|收藏

    原创 如何访问私有成员变量和函数 (修正版)收藏

    修改 Delphi 源码或者访问对象的私有成员函数的一些方法阅读全文>

    发表于 @ 2007年04月09日 00:49:00|评论(loading...)|收藏

    原创 告别畸形的工具提示收藏

    工具提示 (Tooltip 或者 Hint) 属于一个典型的畸形封装。或许是 Borland 的工程师想让 Delphi 的应用程序与众不同,而故意将工具提示最外层边框不用标准的黑色。但新的 Windows Vista 系统对工具提示做了调整,……阅读全文>

    发表于 @ 2007年02月18日 08:45:00|评论(loading...)|收藏

    原创 用来替换 MaskMatch 的通配符比较函数收藏

    Delphi 提供的通配符匹配函数 TMask.Matches 有些问题:如果通配符字符串太长,比如进入 hotmail 邮箱时的地址有大概250个字符。这会导致 TMask.Matches 函数出错,并导致整个程序崩溃。我在网上找了一些不同的实现,并且做了性能比较。现在我优化过的版本分享出来。阅读全文>

    发表于 @ 2004年09月10日 01:08:00|评论(loading...)|编辑|收藏

    原创 可能你不知道的 CPU 资源杀手收藏

    如果你没有用过 TAction,或许你不该说你会 Delphi。TAction 大大简化了界面逻辑的关联,加速了项目的开发。不过我在程序中大量使用 TAction 时,无意发现这样一个问题:如果程序的某个窗体里有超过100个 TAction,在运行这个程序时,只要不停的在该窗体上快速移动鼠标,CPU 占用率会猛增到 30% 左右。[...]阅读全文>

    发表于 @ 2004年09月10日 01:01:00|评论(loading...)|收藏

    Csdn Blog version 3.1a
    Copyright © stanleyxu