Maison  >  Article  >  Java  >  Comparaison des dispositions de placement d'objets en Java et C++

Comparaison des dispositions de placement d'objets en Java et C++

黄舟
黄舟original
2017-09-23 09:49:301228parcourir

Cet article présente principalement des informations pertinentes sur la comparaison des dispositions de placement des objets en Java et C++. J'espère que cet article pourra aider tout le monde. Les amis dans le besoin peuvent se référer à

Comparaison Java de la. disposition du placement des objets et des objets en C++

Résumé :

En Java, tous les objets sont stockés dans le tas (Heap, un pool de mémoire à usage général) ; dans la pile.
Nous pouvons comprendre la relation entre les objets et les références et leurs emplacements de stockage en comparant la chaîne directement déclarée par String et la chaîne déclarée par new String en utilisant equals() et "==".

La pile est une méthode rapide et efficace d'allocation de stockage, juste derrière les registres. Lors de la création d'un programme, le système Java doit connaître la durée de vie exacte de tous les éléments stockés dans la pile afin de déplacer le pointeur de la pile de haut en bas.

L'avantage d'un tas différent d'une pile est que le compilateur n'a pas besoin de savoir combien de temps les données stockées dans le tas survivent. Le tas est donc plus flexible que la pile.
La pile en Java ne peut pas simplement être comprise comme la pile dans la structure de données, bien qu'elles soient toutes Stack en anglais. La pile en Java est située dans la RAM (Random Access Memory) à usage général, mais bénéficie d'un support direct du processeur via le pointeur de pile. Si le pointeur de pile se déplace vers le bas, une nouvelle mémoire est allouée ; s'il se déplace vers le haut, cette mémoire est libérée.

Pour une allocation de mémoire Java spécifique, veuillez consulter la page P22 de « Penser en Java ».

En C++ : Tant que les objets déclarés à l'aide des mots-clés new et malloc sont stockés dans le tas, le mot-clé malloc opère également sur la mémoire du tas :


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

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn