none
un éclircissement pour les variables managés RRS feed

  • Question

  • Comment dire qu'un pointeur désigne une variable managée

    avec le c++ traditionnel on utilisait * variable;

    et quand on déclare une variable managé on dit type ^ variable;

    doit on dire OpenAFile::InitializeComponent();


    Jean Noël Martin

    mardi 26 juin 2012 16:22

Réponses

  • Vous ne pouvez pas avoir de pointeur sur des objets managé. (sauf utilisation de pin et autres joyeusetés)

    Ces objets migrent en mémoire lors du compactage mémoire que fait régulièrement le runtime .NET.

    "type^ variable" n'est donc pas un pointeur mais un "handle" sur un objet. Cet handle à l'immense avantage de toujours être valide même après compactage, et en plus, il permet de réservé une référence sur l'objet pour éviter qu'il soit libéré, par inadvertance, par le garbage collector.


    Paul Bacelar, Ex - MVP VC++

    • Marqué comme réponse JeanNoel53 jeudi 28 juin 2012 16:39
    jeudi 28 juin 2012 15:53
    Modérateur

Toutes les réponses

  • Cette question est simple et est toujours d'actualité

    Jean Noël Martin

    jeudi 28 juin 2012 09:25
  • Vous ne pouvez pas avoir de pointeur sur des objets managé. (sauf utilisation de pin et autres joyeusetés)

    Ces objets migrent en mémoire lors du compactage mémoire que fait régulièrement le runtime .NET.

    "type^ variable" n'est donc pas un pointeur mais un "handle" sur un objet. Cet handle à l'immense avantage de toujours être valide même après compactage, et en plus, il permet de réservé une référence sur l'objet pour éviter qu'il soit libéré, par inadvertance, par le garbage collector.


    Paul Bacelar, Ex - MVP VC++

    • Marqué comme réponse JeanNoel53 jeudi 28 juin 2012 16:39
    jeudi 28 juin 2012 15:53
    Modérateur