- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我怀疑 FreeAndNil 是否是处理对象的理想方法。我遇到过类似的代码
StringList1.Free;
StringList1 := Nil;
被使用。上面的行是矫枉过正,还是更好的做事方式?这两种方法有什么区别?
最佳答案
严格来说,要处理一个对象你只需要调用Destroy
.但是,如果引用是 nil
,即。尚未分配指向对象的有效实例的指针,这会导致访问冲突,因此建议调用 Free
相反,它首先检查传递的引用是否为 nil 并且在这种情况下不执行任何操作。 FreeAndNil
首先将传递的引用分配给一个临时局部变量,然后将nil
分配给传递的引用,然后调用Free
来处理实例。 FreeAndNil
和您的序列 obj.Free 之间的唯一区别; obj := nil;
是在第一种情况下,即使析构函数引发异常,传递的引用也将为 nil
。
关于delphi - Delphi 7 中 FreeAndNil 的替代品是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10546267/
在我的 Delphi7 中这段代码 var MStr: TMemoryStream; ... FreeAndNil(MStr); MStr.Size:=0; 生成 AV:模块“Project1.exe
Free 和 FreeAndNil 之间的基本区别是什么? FreeAndNil = Free + Nil 吗? 什么时候应该使用 Free,什么时候应该使用 FreeAndNil? 最佳答案 查看
注意:请耐心等待,由于对 here 的一些讨论,我感到有点“被烤焦”了。和 here以及我报告的一些问题 here和 here . 一些背景 老叶(10.4 之前)FreeAndNil看起来像这样:
我已阅读A case against FreeAndNil但仍然不明白为什么我不能在类析构函数中使用此方法?谁能解释一下。 更新:我认为来自 Eric Grange 的评论对我来说最有用。该链接显示,
我怀疑 FreeAndNil 是否是处理对象的理想方法。我遇到过类似的代码 StringList1.Free; StringList1 := Nil; 被使用。上面的行是矫枉过正,还是更好的做事方式?
我想将一个对象 A 传递给第二个对象 B,让 B 进行一些处理,最后释放 A,以防不再需要它。下面给出了一个淡化版本。 program Project6; {$APPTYPE CONSOLE} use
这个问题已经有答案了: 已关闭13 年前。 Possible Duplicate: Which is preferable: Free or FreeAndNil? 何时使用 free 和 freea
如果您查看 FreeAndNil 过程的代码,您将看到: procedure FreeAndNil(var Obj); var Temp: TObject; begin Temp := TOb
我是一名优秀的程序员,十分优秀!