title: Managed code
text: # Managed code
  
  Dans la terminologie de Microsoft, le managed code est un code source qui s'exécute sous le contrôle de la machine virtuelle CLR, ou d'une autre machine virtuelle. Ce terme est employé par opposition au unmanaged code (code non géré), qui est exécuté directement par le processeur.
  
  Le « managed code » permet d'améliorer la sûreté de fonctionnement d'un programme informatique, et de simplifier le travail du programmeur. Ce terme fait partie de la terminologie Microsoft, mais le même concept existe pour le langage Java.
  
  Le ramasse-miettes est un exemple d'avantage du « managed code » : si le programmeur oublie de libérer de l'espace-mémoire, le ramasse-miette s'en charge, ce qui évite de provoquer des fuites de mémoire invisibles.
  
  Le « managed code » peut aussi permettre par exemple de vérifier que les variables sont bien du type attendu. Ceci ne simplifie pas nécessairement la tâche d'un programmeur, mais permet une meilleure sûreté de fonctionnement.
  
  Les principaux langages de programmation pour écrire du managed code sont C# et Visual Basic .NET.
  
  ## Analyse du plantage d'un programme
  
  Le managed code évite des plantages des programmes, mais pas tous. Si, malgré tout, il y a un plantage, il est plus facile à analyser. Avec du code non géré, le plantage se produit bien longtemps après l'erreur (effet bombe à retardement), alors qu'avec du managed code, le plantage se produit plus près de l'emplacement de l'erreur.
  
  ## Comparatif avec Java
  
  Le terme de managed code provenant de Microsoft ne fait pas partie de la terminologie Java, mais le même concept existe : du code exécuté dans la JVM bénéficie de plusieurs avantages, dont notamment le ramasse-miettes.
  
  