PHP変数の参照カウンターとコピーオンライト

WBOY
リリース: 2016-08-08 09:19:29
オリジナル
1139 人が閲覧しました

ご存知のとおり、PHP はポインターをサポートしていませんが、2 つの変数が同時に同じメモリ ブロックを指すようにしたい場合はどうすればよいでしょうか?この問題を解決するために、PHP カーネルでは参照カウンターが使用されます。
前回のブログ投稿では、PHP 変数がカーネルにどのように格納されるかを紹介しました。zval 構造体の次の 2 つのメンバー変数は参照カウンターに使用されます。

<code>is_ref  BOOL值,标识变量是否是引用集合。
refcount  计算指向引用集合的变量个数。
</code>
ログイン後にコピー

以下の PHP コードを見てください

<code><?php
    $a = "this is a";
?>
</code>
ログイン後にコピー

zval 構造体のエンティティは と呼ばれます。 zvalコンテナ。 PHP 言語層で変数を作成すると、それに応じて PHP カーネルに zval コンテナが作成されます。上記のコードは変数 $a を作成するため、zval コンテナーが PHP カーネルに作成されます。また、この変数は参照ではないため、zval コンテナーの is_ref は FALSE に等しく、refcount は 1 に等しくなります。 以下のコードを見てください

<code><?php
    $a = "this is a";
    $b=$a;
?>
</code>
ログイン後にコピー
上記のコードは 2 つの変数を作成します

a

著作権免責事項: これ記事はブロガーによるオリジナルの記事であり、ブロガーの許可なく転載することはできません。

以上、PHP変数のリファレンスカウンタとコピーオンライトについて内容も含めて紹介しましたが、PHPチュートリアルに興味のある友人の参考になれば幸いです。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート