問題のプログラム
php > echo memory_get_usage(); 350552 php > class A { php { public $number = 10; php { } php > echo memory_get_usage(); 351040 php > $a = new A(); php > echo memory_get_usage(); 351096 php > $b = new A(); php > echo memory_get_usage(); 351184 php > $a->number = 12; php > echo memory_get_usage(); 351696 php > $b->number = 11; php > echo memory_get_usage(); 351696 php > echo $a->number; 12 php > echo $b->number; 11
ここはわかる
php > $a = new A(); php > echo memory_get_usage(); 351096 php > $b = new A(); php > echo memory_get_usage(); 351184 php > $a->number = 12; php > echo memory_get_usage(); 351696
インスタンス生成した時点ではclassのコピー扱いなのかな、$a->number = 12;
で値を変えることでコピーとして扱えないから、新たにメモリにclassAのコピーを展開するからメモリが増えると予測は出来る
でもこれがわからん
php > $a->number = 12; php > echo memory_get_usage(); 351696 php > $b->number = 11; php > echo memory_get_usage(); 351696
なぜ増えない・・・$a
と$b
は異なる変数のはずなのに・・・
日記
PHPについていっぱいお勉強する週間。
シンボリックテーブルとか、参照渡しとかいろいろ勉強した。
参考サイトが出たらまた記事にまとめたいところ。
ただ、これが解決しないと、理解が出来たと言えない・・・なんだこれ・・・