Parcequ'il y a deux parties distincte en mémoire.
La Pile:
Code :
- {
- Objet monObjet();
- int monEntier;
- }
|
Ces variables sont créées sur la pile, ainsi appelé car les variables sont empilées et sont automatiquement supprimés à la fin du bloc {} dans lequel elles ont été déclarées.
Le Tas:
Code :
- {
- Objet* monObjet=new Objet();
- int* monEntier=new int();
- }
|
Les pointeurs sont créés sur la pile, et libérés à la fin du bloc, mais l'objet lui-même est créé sur le tas, ainsi appelé car les objets y sont entreposés en désordre. L'objet n'est supprimé que lorsque l'on appelle explicitement le destructeur de l'objet:
Code :
- {
- delete monObjet;
- delete monEntier;
- }
|
En gardant un pointeur sur l'objet, on peut garder un objet pour l'utiliser dans diverses parties d'un programme, puis le supprimer quand on en a plus besoin, indépendamment des blocs de code.
L'utilisation du tas necessite de prévoir dans le programme la gestion de la mémoire.
Message édité par nargy le 10-06-2006 à 16:28:35