* Agence Joomla Angers
Agence Joomla Angers
Article:
En informatique, un pointeur intelligent (en anglais smart pointer) se définit comme un type conceptuel de données qui simule le comportement d'un pointeur en y ajoutant des fonctionnalités telles que la libération automatique de la mémoire allouée ou la vérification des bornes. La gestion manuelle de la mémoire dans les langages se servant des pointeurs constitue une source courante de bugs, en particulier de fuites de mémoire ou de plantages. Les pointeurs intelligents réduisent ce risque en rendant automatique la libération des ressources : quand le dernier pointeur vers un objet est détruit, par exemple parce qu'il sort de portée, l'objet pointé est détruit simultanément. Cela peut être implémenté par exemple avec le décompte de références. Un ramasse-miette permet de se passer de pointeurs intelligents. En C++, les templates permettent d'implémenter les pointeurs intelligents car ils calquent le comportement des pointeurs grâce à la surcharge des opérateurs, tout en fournissant des algorithmes de gestion mémoire. l'usage des pointeurs intelligents permet d'exprimer au programmeur comment gérer les objets retournés par une fonction. Les unique_ptr forcent la propriété unique d'un objet en mémoire. Il est cependant possible de transférer cette propriété. Lorsque l'objet possédant l'unique_ptr devient hors de portée, l'objet pointé est également détruit. Les shared_ptr accommodent le comptage de références, ce qui permet de partager l'objet pointé entre plusieurs objets sans se soucier de comment libérer sa mémoire. Lorsque le dernier objet possédant la référence est également détruit, , l'objet pointé est également détruit. Les weak_ptr et les shared_ptr ont les mêmes propriétés, sauf qu'en plus ils permettent de s'affranchir du ème des références circulaires La portabilité montre pour un programme informatique sa capacité à pouvoir être adapté plus ou moins facilement en vue de fonctionner dans différents environnements d'exécution. Les différences peuvent porter sur l'environnement matériel (processeur) comme sur l'environnement logiciel (système d'exploitation). La différence d'environnement peut également porter sur une combinaison des deux éléments. C'est le cas par exemple dans les domaines de l'informatique embarquée, des super calculateurs ou des machines virtuelles. Le portage est l'action de convertir un programme pour qu'il puisse s'exécuter sur un autre environnement. La notion d'environnement d'exécution signale l'ensemble (physique ou logiciel) qui exécutera les instructions du programme. Cet environnement peut avoir différents aspects suivant le langage de programmation utilisé ou le type de programme. Le niveau de portabilité d'un programme est appréciable grâce au fait qu'il emploie le plus petit dénominateur commun à plusieurs environnements. Ainsi, si une bibliothèque logicielle est disponible sur plusieurs environnements et que ce programme ne fait qu'utiliser cette dernière et non certaines fonctions spécifiques à un environnement particulier, on dit que ce programme est portable partout où cette bibliothèque est disponible.