Bonsoir
Chers adaïstes, je débute sur ce langage et j'ai une question pour vous sur l'usage de la mémoire. Je prends l'exemple d'une liste chainée. Je code en Ada 2012.
Je lis qu'il n'y a pas, en général, de GC, de sorte que je dois gérer moi même, pour plus de sureté, mes allocations et désallocations. Pour y parvenir, j'ai la procédure:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 type LC_Element; type LC_Element_PTR is access LC_Element; type LC_Element is record Value : Natural; NextElement : LC_Element_PTR ; end record;
Quand je désalloue ma liste, je désalloue chaque élément. J'ai deux questions:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 procedure Free is new Ada.Unchecked_Deallocation(...)
- est ce que la mémoire est récupérée systématiquement? Ou même après un free, je risque d'avoir un mauvais usage de la mémoire? Ai je un risque d'exploser ma mémoire si j'exécute mon programme longtemps?
- est ce que les adaïstes expérimentés utilisent un free? Ou juste mettent la tête de liste à null? (ce que Barnes met dans un de ses exemples sur son livre Ada 2005) Ou utilisez vous le package Ada.Finalization?
Merci beaucoup pour votre aide!
Partager