delphi - 如果 "dangling pointers"检测不到,如何检测 "Assigned()"?

标签 delphi validation pointers delphi-7

在另一个question ,我发现Assigned()功能与 Pointer <> nil 相同。我一直以来的理解是Assigned()正在检测这些悬空指针,但现在我知道它没有。悬空指针是那些可能在某个时刻创建的指针,但此后已被释放并且尚未分配给nil。还没有。

如果Assigned()无法检测悬空指针,那么什么可以呢?我想在尝试使用我的对象之前检查它,以确保它确实是一个有效的创建对象。我不使用FreeAndNil正如很多人推荐的那样,因为我喜欢直接。我只是用SomeObject.Free .

访问违规是我最大的敌人 - 我尽我所能阻止它们的出现。

最佳答案

如果您的作用域中有一个对象变量,并且它可能是也可能不是有效的引用,那么您应该使用 FreeAndNil。或者修复您的代码,以便更严格地管理您的对象引用,因此这永远不是问题。

访问违规不应被视为敌人。它们是错误:它们意味着您犯了一个需要修复的错误。 (或者您所依赖的某些代码中存在错误,但我发现最常见的是我搞砸了,尤其是在处理 RTL、VCL 或 Win32 API 时。)

关于delphi - 如果 "dangling pointers"检测不到,如何检测 "Assigned()"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8598408/

相关文章:

angularjs - AngularUI datepicker-popup - 手动输入日期和最小/最大日期

asp.net - 潜在危险值,错误不会消失

c - 为什么代码显示两个不同变量的相同值,temp 既不是本地也不是全局,什么是 temp?

C语言-指针运算

objective-c - Cocoa/Objective-C 中是否有相当于 Delphi TStringList 的东西?

android - 将图像从 Android 发送到 Datasnap Restful Server

validation - Symfony2 : how to validate UploadedFile without form?

德尔福非rtti检查员

android - Delphi android 拖放按钮

c - 指向二维结构数组的指针