Delphi 中的 Free 和 Nil
在 Delphi 中释放对象资源时一般用 Obj.Free(Obj 为一个实例名), 不过程 Delphi 中还有一个 FreeAndNil(对象名) 函数, 那么用哪个好呢? Free 和 Nil 的本质又都是什么呢?
在 Delphi 中一个对象名只是一个指向该对象的指针, 可以有多个指针指向同一个对象地址. Nil 是将指针置空, 而 Free 则将指针指向的对象销毁掉. 如下所示:
- Obj.Free; // 将 Obj 所指向的对象销毁.
- Obj:= nil; // 将 Obj 指针置空. 如果将上面的一句放在后面, 则 Free 时会报错, 因为指针不指向该对象的地址, 也不指向任何内存地址.
还有在销毁对象时一定要注意, 看还有没有其他指针指向该对象, 如果有却销毁掉了, 那么其他指针调用该对象时会报错. 如果有多个指针指向同一个对象时, 不要用 FreeAndNil 来销毁对象, 因为不确定是否还有指针指向该对象, 此时只需把不用的指针置空就行了, 不过在所有指针都不指向该对象时, 一定要记得销毁掉, 以释放资源.
---------------------
作者: 云中雁 012345
来源: http://www.bubuko.com/infodetail-3073862.html