整数、文字列、その他の型と同様、オブジェクト型も PHP のデータ型です。これらは、プログラム内にさまざまな種類のデータを保存するために使用されます。プログラムの実行時には、その内容の各部分を使用する前にメモリにロードする必要があります。では、オブジェクト型データはどのようにしてメモリに割り当てられるのでしょうか?まずはメモリの構造を理解しましょう。論理的には、メモリはスタック領域セグメント、ヒープ領域セグメント、初期化データ セグメント、コード セグメントの 4 つのセグメントに大別され、プログラム内のさまざまな種類のデータの宣言は異なるメモリ セグメントに格納されます。メモリの各セグメントの特徴は次のとおりです。
①. スタック領域セグメント
スタックは、プログラム内で一時的に作成された変数をユーザーが保存するために使用される、小さい領域ですが高速なアクセスが特徴です。スタックの後入れ先出しの性質により、スタックは通話シーンの保存と復元に特に便利です。この意味で、スタックは一時的なデータの保存と交換のためのメモリ領域と考えることができます。一定の長さと小さなスペースを占有するデータ型を格納するために使用されるメモリ セグメント。たとえば、整数 1、100、10000 などはメモリ内の同じ長さのスペースを占有し、占有されるスペースは 32 ビットと 4 バイトです。 Double、boolean などもスタック領域セグメントに格納できます。
②. ヒープ領域セグメント
ヒープは、プロセスの実行中に動的に割り当てられるメモリ セグメントを格納するために使用され、そのサイズは固定されず、動的に拡張または縮小できます。可変データ長または大量のメモリ使用量のデータを格納するために使用されます。たとえば、文字列、配列、オブジェクトがこのメモリに保存されます。
③. データセグメント
データセグメントは、実行ファイル内に初期化されたグローバル変数を格納するために使用されます。つまり、プログラムによって静的に割り当てられた変数を格納します。
④.コードセグメント
コードセグメントは、実行可能ファイルの操作命令を格納するために使用され、メモリ上の実行可能プログラムのイメージを意味します。コード セグメントは実行時に不正に変更されるのを防ぐ必要があるため、読み取り操作のみが許可され、書き込み (変更) 操作は許可されません。たとえば、プログラム内の関数はこのメモリに格納されます。
オブジェクト型データは、比較的大きな空間を占めるデータ型であり、可変長の空間を占有するデータ型であるため、オブジェクト作成後はメモリ上に格納されますが、オブジェクトへの参照は行われません。オブジェクトはまだスタックに格納されています。プログラムの実行中、メモリ内のデータには直接アクセスできますが、ヒープ メモリは直接アクセスできないメモリですが、オブジェクトの参照名を通じてオブジェクト内のメンバにアクセスできます。
>> この記事への固定リンク: http://php.ncong.com/php_course/oop/duixiangfenpei.html
>> 転載する場合はその旨を明記してください: Encongphp 2014 年 7 月 23 日に Encong PHP 学習チュートリアルで公開されました
PHP は明示的にメモリを割り当てます。暗黙的にメモリを割り当てる方法はありません。 PHP では、変数を定義するときにメモリ内にスペースを空ける必要があります。 C では、malloc、alloc、realloc を使用してメモリを割り当てる方法はありません。
くそー、この問題を理解していないのにどうやって Java を学ぶことができるでしょうか?
ヒープ内のメモリ領域は、新しいオブジェクトがヒープに格納された後に割り当てられます
オブジェクトを 1 つだけ宣言した場合、ヒープ メモリは割り当てられません。
ヒープにはインスタンス化されたオブジェクトが保存されます。