不思議な現象 定数の生成過程

WBOY
リリース: 2016-06-13 13:18:29
オリジナル
797 人が閲覧しました

奇妙な現象: 定数作成プロセス

PHP コード
<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--><?php
var_dump( memory_get_usage() );  // int(129100)
var_dump( memory_get_usage() );  // int(129156)  - 很难理解,这里为什么会有内存增加?
var_dump( memory_get_usage() );  // int(129156)
define('hello', 'WORLD');
var_dump( memory_get_usage() );  // int(129156)   - 既然创建了一个常量,就该有内存增加。
$hello = 'WORLD';
var_dump( memory_get_usage() );  // int(129304)
ログイン後にコピー


-----解決策----------- --- -------
これを見てください:
http://www.laruence.com/2011/03/04/1894.html

PHP は C のような低レベル言語とは異なります。PHP 自体は、より高度な言語です。小さなシステムのように
------解決策------------------
私の実行結果は
int(51312)
int(51424)
int(51424)
int(51480)
int(51480)

という議論だと思います。 single ステートメントによって消費されるメモリには意味がありません。メモリ割り当ては実際にはセグメント化されています。つまり、1 バイトのメモリが必要な場合でも、実際の割り当ては、割り当て戦略に応じて 32 バイトまたは 1024 バイトになる場合があります。これは、各割り当てを使用する必要がないためです。変数は通常、1 文字と 1 バイトに基づいておおよそ計算できますが、正確に計算することは困難です。

さらに、var_dump 関数自体が文字列を出力しますが、この文字列にもメモリが必要かどうかは内部実装によって異なります。動作中にメモリが増加する場合と、メモリが変更されない場合があるのはなぜですか? 前回割り当てられた追加メモリが十分であるかどうかの問題が原因です。十分であれば、メモリを増やす必要はありません。足りないので、増やします。
関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート