脚本宝典收集整理的这篇文章主要介绍了zend_string_release和zend_string_free有什么区别?,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
static zend_always_inline void zend_string_free(zend_string *s) { if (!IS_INTERNED(s)) { ZEND_ASSERT(GC_REfcOUNT(s) <= 1); PEfree(s,GC_FLAGS(s) & IS_STR_PERSISTENT); } } static zend_always_inline void zend_string_release(zend_string *s) { if (!IS_INTERNED(s)) { if (--GC_REFCOUNT(s) == 0) { pefree(s,GC_FLAGS(s) & IS_STR_PERSISTENT); } } }
编辑:
很高兴有一个实际的例子,其中zend_string_free比zend_string_release更合适,反之亦然.
zend_string_release函数是您希望在绝大多数情况下使用的函数,它将减少引用计数.如果碰巧你是字符串的最后一个用户(即refcount现在为零),那么字符串将被释放.
zend_string_free函数是对已经知道您是唯一使用该字符串的情况的优化.它将直接释放字符串,而不首先检查引用计数(断言仅用于调试,它在发布版本中不存在).
如有疑问,请使用zend_string_release.
以上是脚本宝典为你收集整理的zend_string_release和zend_string_free有什么区别?全部内容,希望文章能够帮你解决zend_string_release和zend_string_free有什么区别?所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。