この記事では、Java と C++ のオブジェクトの配置の比較に関する情報を主に紹介します。この記事が、必要な方の参考になれば幸いです。
Java と C++ のオブジェクトの配置の比較。
概要:
Java では、すべてのオブジェクトはヒープ (ヒープ、一般的なメモリ プール) に格納され、オブジェクト参照はスタック (スタック) に格納されます。
Stringで直接宣言した文字列とnew Stringで宣言した文字列をequals()や"==を使って比較することで、オブジェクトと参照の関係とその格納場所を理解することができます。
スタックは、レジスタに次いで高速かつ効率的にストレージを割り当てる方法です。プログラムを作成するとき、Java システムはスタック ポインタを上下に移動するために、スタック内に格納されているすべての項目の正確な存続期間を知る必要があります。
ヒープの利点はスタックとは異なります。コンパイラーは、ヒープに格納されたデータがどれくらいの期間存続するかを知る必要がありません。したがって、ヒープはスタックよりも柔軟です。
Java のスタックは、英語ではすべて Stack ですが、単純にデータ構造のスタックとして理解することはできません。 Java のスタックは汎用 RAM (ランダム アクセス メモリ) にありますが、スタック ポインタを介してプロセッサから直接サポートされます。スタック ポインタが下に移動すると、新しいメモリが割り当てられ、上に移動すると、そのメモリが解放されます。
具体的なJavaのメモリ割り当てについては、「Javaで考える」のP22をご覧ください。
C++: new および malloc キーワードを使用して宣言されたオブジェクトがヒープに格納されている限り、malloc キーワードもヒープ メモリ上で動作します:
A a(1);//栈中分配 A b = A(1);//栈中分配 A *c = new A(1);//堆中分配内存空间,将在堆中所创建的对象存储地址赋值给c指针 A *d = (A*)malloc(sizeof(A));//堆中分配内存空间 delete c;
以上がJava と C++ でのオブジェクトの配置配置の比較の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。