如何释放使用以下代码创建的变量?
zval *zval_ = nullptr;
MAKE_STD_ZVAL(zval_);
ZVAL_NULL(zval_);
最佳答案
PHP 具有垃圾回收内存管理。您通常不会手动/强制释放它,当没有更多引用时它会被 GC 处理。但是,您必须正确使用引用。
在documentation ,看看 Z_ADDREF
、Z_DECREF
和 zval_ptr_dtor
。还有一个 Z_FREE
,但您通常不应该使用它 - 您不想强行释放在其他“实时”(可访问)中引用的 zval
值(value)观!
有关如何通过相应纯 PHP 代码的具体示例使用引用系统的概述,请参阅 reference tutorial在文档中。
要准确回答您的问题:MAKE_STD_ZVAL
以引用计数 1 开始值。因此,一次调用
zval_ptr_dtor(zval_);
将在下一次 GC 迭代时删除该引用并清除该变量(与 Z_FREE
不同,即使您将值传递给可能将其存储在某处并递增其引用的函数,这也会做正确的事情计数等...)
关于php - 如何在使用 MAKE_STD_ZVAL 创建的 PHP5 中释放 zval?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40610845/