Heim > Backend-Entwicklung > PHP-Tutorial > Referenzzähler und Copy-on-Write für PHP-Variablen

Referenzzähler und Copy-on-Write für PHP-Variablen

WBOY
Freigeben: 2016-08-08 09:19:29
Original
1170 Leute haben es durchsucht

Wie wir alle wissen, unterstützt PHP keine Zeiger, aber was ist, wenn zwei Variablen gleichzeitig auf denselben Speicherblock zeigen sollen? Um dieses Problem zu lösen, werden im PHP-Kernel Referenzzähler verwendet.
Im vorherigen Blogbeitrag wurde vorgestellt, wie PHP-Variablen im Kernel gespeichert werden. Die folgenden zwei Mitgliedsvariablen in der zval-Struktur werden als Referenzzähler verwendet:

<code>is_ref  BOOL值,标识变量是否是引用集合。
refcount  计算指向引用集合的变量个数。
</code>
Nach dem Login kopieren

Sehen Sie sich den folgenden PHP-Code an

<code><?php
    $a = "this is a";
?>
</code>
Nach dem Login kopieren

Eine Entität einer Zval-Struktur wird als Zval-Container bezeichnet. Durch das Erstellen einer Variablen in der PHP-Sprachebene wird entsprechend ein Zval-Container im PHP-Kernel erstellt. Da der obige Code eine Variable $a erstellt, wird ein zval-Container im PHP-Kernel erstellt. Da diese Variable keine Referenz ist, ist is_ref des zval-Containers gleich FALSE und der Refcount ist gleich 1.
Schauen Sie sich den Code unten an

<code><?php
    $a = "this is a";
    $b=$a;
?>
</code>
Nach dem Login kopieren

Der obige Code erstellt zwei Variablen a und

Urheberrechtserklärung: Dieser Artikel ist ein Originalartikel des Bloggers und darf nicht ohne die Erlaubnis des Bloggers reproduziert werden.

Das Obige stellt den Referenzzähler und das Copy-on-Write von PHP-Variablen vor, einschließlich des Inhalts. Ich hoffe, dass es für Freunde hilfreich ist, die sich für PHP-Tutorials interessieren.

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage