2009-10-08 15 views

Répondre

11

Il y aura des détails spécifiques à la langue, mais l'idée générale est la suivante:

  • statique: alloué au démarrage du programme, existe pour la vie entière du programme
  • automatique: attribué lors de l'entrée dans un bloc, existe pour durée de ce bloc

L'allocation dynamique nécessite un peu plus d'explications: elle est allouée lorsque vous l'attribuez (par exemple avec quelque chose comme 'new XXX'). Dans (la plupart des implémentations de) C++, il existera jusqu'à ce que vous le supprimiez explicitement. Avec la plupart des langages plus récents (par exemple Java, C#) il existera jusqu'à ce que le garbage collector détermine qu'il n'est plus accessible, moment auquel il sera détruit automatiquement.

Toutes les langues n'ont pas toutes les trois formes d'allocation. Dans certains cas (par exemple Java), même si une forme d'allocation est prise en charge, il existe des restrictions telles que l'allocation automatique pour les types intégrés, mais nécessitant une allocation dynamique pour les types d'objet (c'est-à-dire les instances de classes).

3

L'allocation statique est une mémoire qui a été mise de côté pour une application lors du premier chargement. Cette section de la mémoire est conservée pour être utilisée uniquement avec cette application, et est rendue disponible à nouveau une fois le programme fermé.

L'allocation dynamique est la mémoire qui est allouée selon les besoins et libérée/libérée lorsqu'elle n'est plus nécessaire. Les tas et les piles sont des exemples de zones de mémoire pouvant être allouées dynamiquement.

Questions connexes