Allocation de mémoire
Pour disposer d'espace où travailler un programme informatique doit disposer de place mémoire. Afin de répondre à cette exigence universelle, plusieurs approches sont possibles. La plupart des langages informatiques et des programmes utilisent simultanément toutes ses approches en fonction de leurs avantages ou inconvénients.
On parle ici de mémoire informatique et plus précisément de mémoire vive.
Allocation statique de la mémoire
Cette méthode est la plus simple. Elle impose simplement de prévoir l'espace mémoire nécessaire dès le début de l'exécution du programme (ou dès la phase de compilation). C'est - essentiellement - ce qui a lieu quand on définit une variable en indiquant sa taille.
Avantages :
- simplicité : une définition suffit (éventuellement accompagnée de déclarations).
- il est possible de déterminer dès la compilation ou le début de l'exécution si le programme disposera d'assez de mémoire pour arriver à son objectif.
Inconvénients :
- manque de souplesse : on ne peut pas toujours prévoir à l'avance tous les besoins en mémoire d'un programme.
Allocation dynamique de la mémoire
Cette méthode est la plus souple. À défaut de prévoir à l'avance, l'implémentation du programme informatique comporte une capacité à demander de la mémoire disponible (généralement dans un espace réservé à cet usage) et à identifie puis utiliser la mémoire ainsi allouée.
Avantages :
- simplicité : aucun besoin de se préoccuper (à l'avance) de disposer de mémoire.
- certains modes de programmation ne permettent pas de prévoir la mémoire à réserver à l'avance. Ils ne pourraient raisonnablement pas fonctionner autrement.
- grande flexibilité dans l'utilisation de la mémoire disponible (éventuellement, en optimisant au mieux le faible espace disponible)
Inconvénients :
- dans le cas général, il est pratiquement impossible de déterminer si un programme qui utilise cette technique disposera d'assez de mémoire pour s'exécuter à l'interieur d'un espace donné.
- le processus d'allocation, plus complexe, est sensiblement plus lent à exécuter, ce qui peut avoir un impact de performance mesurable.
- il faut aussi inclure une solution de libération de la mémoire ou un ramasse-miettes
