2
如何釋放使用以下代碼創建的變量?如何在使用MAKE_STD_ZVAL創建的PHP5中釋放zval?
zval *zval_ = nullptr;
MAKE_STD_ZVAL(zval_);
ZVAL_NULL(zval_);
如何釋放使用以下代碼創建的變量?如何在使用MAKE_STD_ZVAL創建的PHP5中釋放zval?
zval *zval_ = nullptr;
MAKE_STD_ZVAL(zval_);
ZVAL_NULL(zval_);
PHP有垃圾回收內存管理。你通常不會手動/強制釋放它,當沒有更多的引用時它會被GC'd。但是,您必須正確使用引用。
在documentation中,查看Z_ADDREF
,Z_DECREF
和zval_ptr_dtor
。還有一個Z_FREE
,但是你通常不應該使用這個 - 你不想強制釋放在其他「活動」(可達)值中引用的zval
!
有關如何使用參考系統以及相應普通PHP代碼的具體示例的概述,請參閱文檔中的reference tutorial。
要準確地回答你的問題:MAKE_STD_ZVAL
用1引用計數因此,單一的通話
zval_ptr_dtor(zval_);
將刪除該參考,並清除在下次GC迭代變量(而不像Z_FREE
開始值關這將做正確的事情,即使你將值傳遞給可能存儲在某個地方的某個函數,並增加其參考計數等等。)