如何在使用MAKE_STD_ZVAL创建的PHP5中释放zval?

时间:2016-11-15 13:19:20

标签: php c

如何释放使用以下代码创建的变量?

id, timestamp, link_id, user_id, ip_id, user_agent_id, ...

1 个答案:

答案 0 :(得分:1)

PHP有垃圾收集内存管理。你通常不会手动/强制释放它,当没有更多的参考时它会得到GC。但是,您必须正确使用引用。

documentation中,查看Z_ADDREFZ_DECREFzval_ptr_dtor。还有一个Z_FREE,但您通常不应该使用此功能 - 您不想强制释放其他" live"中引用的zval。 (可达)值!

有关如何将参考系统与相应的纯PHP代码的具体示例一起使用的概述,请参阅文档中的reference tutorial

准确回答您的问题:MAKE_STD_ZVAL以引用计数为1启动值。因此,只需一次调用

 zval_ptr_dtor(zval_);

将删除该引用并在下一次GC迭代时清除该变量(与Z_FREE不同,即使您将值传递给可能将其存储在某处并增加其引用计数等的函数,这也会做正确的事情。 ...)