ObjAddRef() / ObjRelease() [AHK_L 53+]

优质
小牛编辑
127浏览
2023-12-01

增加或减少对象的引用数.

ObjAddRef(Ptr)
ObjRelease(Ptr)

参数

Ptr

非托管对象指针或 COM 接口指针.

返回值

这两个函数返回新的引用数. 这个值应该 用于调试的目的.

相关

尽管后面的文章讨论了适用于 COM 的引用计数, 但其中也包含了通常也适用于 AutoHotkey 对象的重要概念和规则: IUnknown::AddRef, IUnknown::Release, 引用计数规则.

示例

请参阅 ComObjConnect.

obj := Object()

; 下面的两行是等同的:
ptr1 := Object(obj)
ptr2 := ObjectToPointer(obj)

ObjectToPointer(obj) {
    if !IsObject(obj)
        return ""
    ptr := &obj
    ObjAddRef(ptr)
    return ptr
}

; 由 Object() 或 ObjectToPointer() 返回的指针必须进行手动释放,
; 这样才能最终释放对象并回收它占用的内存.
ObjRelease(ptr2)
ObjRelease(ptr1)