引用计数

7.7.3 引用计数

//获取引用数:pz类型为zval*
#define Z_REFCOUNT_P(pz)            zval_refcount_p(pz)
//设置引用数
#define Z_SET_REFCOUNT_P(pz, rc)    zval_set_refcount_p(pz, rc)
//增加引用
#define Z_ADDREF_P(pz)              zval_addref_p(pz)
//减少引用
#define Z_DELREF_P(pz)              zval_delref_p(pz)

#define Z_REFCOUNT(z)               Z_REFCOUNT_P(&(z))
#define Z_SET_REFCOUNT(z, rc)       Z_SET_REFCOUNT_P(&(z), rc)
#define Z_ADDREF(z)                 Z_ADDREF_P(&(z))
#define Z_DELREF(z)                 Z_DELREF_P(&(z))

//只对使用了引用计数的变量类型增加引用,建议使用这个
#define Z_TRY_ADDREF_P(pz) do {     \
    if (Z_REFCOUNTED_P((pz))) {     \
        Z_ADDREF_P((pz));           \
    }                               \
} while (0)

#define Z_TRY_DELREF_P(pz) do {     \
    if (Z_REFCOUNTED_P((pz))) {     \
        Z_DELREF_P((pz));           \
    }                               \
} while (0)

#define Z_TRY_ADDREF(z)             Z_TRY_ADDREF_P(&(z))
#define Z_TRY_DELREF(z)             Z_TRY_DELREF_P(&(z))
联系我们

邮箱 626512443@qq.com
电话 18611320371(微信)
QQ群 235681453

Copyright © 2015-2024

备案号:京ICP备15003423号-3