在另一个问题中,我发现
如果
访问冲突是我最大的敌人-我会尽我所能防止它们的出现。
Assigned()
函数与Pointer <> nil
相同。我一直认为Assigned()
是用来检测这些悬空指针的,但现在我知道它不行。悬空指针是那些可能在某个时候创建的指针,但已经被释放并且尚未分配给nil
。如果
Assigned()
无法检测悬空指针,那么可以用什么来检测呢?我想检查我的对象确实是一个有效的创建对象,然后再试着去操作它。我不使用很多人推荐的FreeAndNil
,因为我喜欢更加直接地操作。我只是使用SomeObject.Free
。访问冲突是我最大的敌人-我会尽我所能防止它们的出现。
FreeAndNil
的原因——它非常直接。 - Seth CarnegieFreeAndNil
. - Seth Carnegie