Heim  >  Artikel  >  Java  >  Vergleich der Objektplatzierungsanordnungen in Java und C++

Vergleich der Objektplatzierungsanordnungen in Java und C++

黄舟
黄舟Original
2017-09-23 09:49:301213Durchsuche

Dieser Artikel stellt hauptsächlich relevante Informationen zum Vergleich der Platzierungsanordnungen von Objekten in Java und C++ vor. Ich hoffe, dieser Artikel kann jedem helfen, der Hilfe braucht.

Java-Vergleich Platzierungsanordnung von Objekten und Objekten in C++

Zusammenfassung:

In Java werden alle Objekte im Heap gespeichert (Heap, ein allgemeiner Speicherpool). im Stapel.
Wir können die Beziehung zwischen Objekten und Referenzen und ihren Speicherorten verstehen, indem wir die direkt von String deklarierte Zeichenfolge und die von new String deklarierte Zeichenfolge mithilfe von equal() und „==" vergleichen.

Der Stack ist nach Registern eine schnelle und effiziente Methode zur Speicherzuweisung. Beim Erstellen eines Programms muss das Java-System die genaue Lebensdauer aller im Stapel gespeicherten Elemente kennen, um den Stapelzeiger nach oben und unten bewegen zu können.

Der Vorteil des Heaps besteht darin, dass er sich vom Stack unterscheidet: Der Compiler muss nicht wissen, wie lange die im Heap gespeicherten Daten überleben. Daher ist der Heap flexibler als der Stack.
Der Stapel in Java kann nicht einfach als Stapel in der Datenstruktur verstanden werden, obwohl sie alle auf Englisch Stapel sind. Der Stapel in Java befindet sich im Allzweck-RAM (Random Access Memory), wird jedoch direkt vom Prozessor über den Stapelzeiger unterstützt. Bewegt sich der Stapelzeiger nach unten, wird neuer Speicher zugewiesen; bewegt er sich nach oben, wird dieser Speicher freigegeben.

Informationen zur spezifischen Java-Speicherzuweisung finden Sie auf Seite P22 von „Thinking in Java“.

In C++: Solange die mit den Schlüsselwörtern new und malloc deklarierten Objekte im Heap gespeichert sind, wirkt das Schlüsselwort malloc auch auf den Heap-Speicher:


A a(1);//栈中分配 
A b = A(1);//栈中分配 
A *c = new A(1);//堆中分配内存空间,将在堆中所创建的对象存储地址赋值给c指针 
A *d = (A*)malloc(sizeof(A));//堆中分配内存空间 
delete c;

Das obige ist der detaillierte Inhalt vonVergleich der Objektplatzierungsanordnungen in Java und C++. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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