加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

德尔福内存管理

发布时间:2020-12-15 09:41:22 所属栏目:大数据 来源:网络整理
导读:我无法找到几个Delphi内存管理问题的答案.我可以测试不同的场景(我做了什么来找出破坏FreeAndNil方法的东西),但它需要太长时间而且很难!但说真的,我还想知道你们(Delphi开发人员)如何处理这些内存管理问题. 我的问题(随意提出自己的问题,我确信他们的答案对
我无法找到几个Delphi内存管理问题的答案.我可以测试不同的场景(我做了什么来找出破坏FreeAndNil方法的东西),但它需要太长时间而且很难!但说真的,我还想知道你们(Delphi开发人员)如何处理这些内存管理问题.

我的问题(随意提出自己的问题,我确信他们的答案对我也有帮助):

> FreeAndNil是否适用于COM对象?我的想法是我不需要它,但是如果我需要做的就是将它设置为nil,而不是为什么不在我的finally块中保持一致并使用FreeAndNil进行所有操作?
>什么是清理静态数组的正确方法(myArr:TObject的数组[0..5]).我不能FreeAndNil它,所以将它设置为nil是否足够好(在FreeAnNil’d每个对象之后我需要这样做吗?)?

多谢你们!

解决方法

COM对象通过接口引用,您无需执行任何操作即可.编译器负责必要的引用计数逻辑,以确保在正确的时间处理COM对象.

至于静态数组(或动态数组),它们也不需要被释放.如果它们包含对象,则必须在适当的时间释放对象,但数组不会.

此外,永远不要在任何不是对象引用的东西上使用FreeAndNil.将它与接口或其他变量一起使用可能会破坏内存.最好永远不要使用它(使用Free代替),除非你正在处理一个你需要释放然后再重用的对象.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读