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

标签 php c

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

zval *zval_ = nullptr;
MAKE_STD_ZVAL(zval_);
ZVAL_NULL(zval_);

最佳答案

PHP 具有垃圾回收内存管理。您通常不会手动/强制释放它,当没有更多引用时它会被 GC 处理。但是,您必须正确使用引用。

documentation ,看看 Z_ADDREFZ_DECREFzval_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/

相关文章:

python - 如何使用 python 或 c 访问我的网络摄像头

c - 是否可以将结构转换为另一个结构?

php或mysql以随机顺序从每个组合中选择数据

php - 高 HTTP API 调用时 Apache 服务器变慢

php - 按大写字母或小写字母搜索单词

c - 在共享库中获取 undefined reference

c - 如何查看 char 类型 main() 的返回值

php - 按日期和值分组

php - Azure 上的 Drupal update.php 抛出错误 "Could not connect to server"

c - 如何确定文件描述符是否附加到 Linux 中的文件或套接字