IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Dotnet Discussion :

managed et unmanaged mémoire


Sujet :

Dotnet

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Étudiant
    Inscrit en
    Août 2008
    Messages
    349
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2008
    Messages : 349
    Par défaut managed et unmanaged mémoire
    Bonjour à tous

    Est ce que quelq'un peut m'expliquer la différence entre le "managed" et le "unmanaged" mémoire en .NET et est ce que un simple objet instancié d'une classe peut etre considérer comme un "managed" ou "unmanaged" ressource en .NET ??

    Merci d'avance.

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    159
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2009
    Messages : 159
    Par défaut
    Salut,

    En .NET, la mémoire est gérée par la runtime (appelée CLR) pour créer les objets et pour les libérer (via un mécanisme appelé GC ou Garbage Collector).

    Donc, lorsque l'on instantie un objet, on laisse .NET faire le travail d'allocation mémoire et le suivi de la vie de l'objet pour décider du moment propice de sa destruction/désallocation. C'est ce que l'on appelle donc un objet "managed" = géré par .NET et sa CLR.

    Avant l'arrivée de .NET, lorsque l'on faisait du C++, on gérait soit-même la mémoire à coup de malloc() pour réserver une plage mémoire puis on libérait soit-même la mémoire également. Cela est toujours possible en .NET en faisant ce que l'on appele du code "unsafe" (non sûr). Dans ces cas là, on prends la décision de ne plus laisser .NET géré la mémoire pour nous. On fait donc du code "unmanaged" et on retombe dans les mêmes pièges/dangers du mode unmanaged ou également appelé natif : fuite mémoire plus probable, problème de manipulation de pointeurs hasardeux, etc.

    En effet, .NET en plus de gérer la mémoire pour nous met en place des mécanismes de protection pour éviter par exemple un débordement de tableau, etc. Toute cette coquille permet d'avoir un monde managé par .NET.

    Voilà, j'espère avoir été clair et avoir répondu à la question.

    Bye,

    David Rousset
    Microsoft France

Discussions similaires

  1. lien entre classes managed et unmanaged
    Par FadeOut dans le forum C++/CLI
    Réponses: 3
    Dernier message: 29/11/2010, 21h07
  2. Bitmap managed et unmanaged
    Par Hurin dans le forum C++
    Réponses: 3
    Dernier message: 21/04/2008, 11h39
  3. Problème de mémoire (managed et unmanaged )
    Par vigiElf dans le forum C#
    Réponses: 6
    Dernier message: 01/04/2008, 17h15
  4. Cohabitation C++ managed / C++ unmanaged / windows.h
    Par samball dans le forum VC++ .NET
    Réponses: 1
    Dernier message: 16/02/2008, 18h54
  5. [C#, .net 2.0] Libération de mémoire non managée
    Par SesechXP dans le forum C++/CLI
    Réponses: 2
    Dernier message: 08/12/2006, 09h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo