用户操作
[即时聊天] [发私信] [加为好友]
stanleyxuID:Stanley_Xu
18619次访问,排名6421(-6)好友0人,关注者1
http://getgosurf.com/
http://mmjd.com/
Stanley_Xu的文章
原创 15 篇
翻译 0 篇
转载 0 篇
评论 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
    2008年01月11日

    原创 Unicode 随想

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

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

    2007年08月02日

    原创 查询接口小议

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

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

    2007年07月20日

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

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

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

    2007年05月11日

    原创 你的单例足够单吗

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

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

    2007年04月09日

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

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

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

    2007年02月26日

    原创 到底谁是流氓

    看见新闻频道的这篇文章 “疯狂VC邪恶的钱:一个视频站创始人的狼狈退出” 真好笑,就是有你们这种流氓站点才早就了一批流氓软件。究竟谁疯狂谁邪恶?也不知道这种专访是怎么登到csdn的。阅读全文>

    发表于 @ 2007年02月26日 13:10:00|评论(loading...)|编辑

    2007年02月18日

    原创 告别畸形的工具提示

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

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

    2007年02月13日

    原创 冤枉!浏览器缘何会丢失 Cookie

    最近一段时间用户总反应使用 GOSURF 的时候经常丢 cookie。但是事实上,在我机器上各个Discuz论坛疯狂丢 cookie 的同时,那些国外的 vbb、ipb 论坛相安无事。所以我认为官方的说法有误,并进行了一番研究。 阅读全文>

    发表于 @ 2007年02月13日 18:49:00|评论(loading...)|编辑

    2007年02月07日

    原创 子窗体弹出位置错误

    在设计窗体时通常会把子窗体的 Position 设置成 poMainFormCenter。也就是说,子窗体弹出的位置是主窗体的正中。但是如果把主窗体拖动到屏幕左下角,而且主窗体的50%部分已经超出了屏幕范围,这个时候主窗体的正中其实已经不在屏幕范围之内了。这个时候弹出的子窗体可能部分或者完全处在屏幕之外了。阅读全文>

    发表于 @ 2007年02月07日 20:33:00|评论(loading...)|编辑

    Csdn Blog version 3.1a
    Copyright © stanleyxu