次のコードで作成した変数を解放するにはどうすればよいですか?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になります。ただし、参照を適切に使用する必要があります。
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
とは異なりますこれは、値をどこかに格納してその参照カウントを増やす関数に渡しても正しいことをするでしょう...)