Oui, Ada permet une telle vérification, cf le pragma Normalize_Scalars qui fait partie des pragma spécifiques d'une implémentation. GNAT, le front-end Ada présent dans GCC, le supporte,
Ce pragma permet de vérifier que les variables sont bien initialisées, mais seulement celles de type scalaire. L'idée semble-t-il est d'initialiser par défaut avec une valeur telle qu'une exception est levée lorsque l'on accède à une valeur non initialisée.
De plus, par défaut les types accès (en gros les pointeurs de Ada) sont initialisés à une valeur nulle, cela évite de pointer sur n'importe quoi ..
A noter par ailleurs que les mécanismes de protection de Ada font qu'une bonne partie des bugs que Valgrind permet de détecter peuvent l'être directement lors de l'exécution d'un programme Ada en se basant sur les exceptions levées par la runtime.
Si cela ne suffit pas, certains packages permettent la redéfinition de l'allocation et désallocation de la mémoire et ainsi de tracer ce qui se passe. Ainsi GNAT.Debug_Pools ajoute un certain nombre de vérifications lors d'accès mémoire et permet de vérifier les accès mémoires au prix (il est vrai) d'une recompilation.
[^] # Re: Valgrind 1.9.5
Posté par yoogx . En réponse à la dépêche Valgrind 1.9.5. Évalué à 5.
Ce pragma permet de vérifier que les variables sont bien initialisées, mais seulement celles de type scalaire. L'idée semble-t-il est d'initialiser par défaut avec une valeur telle qu'une exception est levée lorsque l'on accède à une valeur non initialisée.
De plus, par défaut les types accès (en gros les pointeurs de Ada) sont initialisés à une valeur nulle, cela évite de pointer sur n'importe quoi ..
A noter par ailleurs que les mécanismes de protection de Ada font qu'une bonne partie des bugs que Valgrind permet de détecter peuvent l'être directement lors de l'exécution d'un programme Ada en se basant sur les exceptions levées par la runtime.
Si cela ne suffit pas, certains packages permettent la redéfinition de l'allocation et désallocation de la mémoire et ainsi de tracer ce qui se passe. Ainsi GNAT.Debug_Pools ajoute un certain nombre de vérifications lors d'accès mémoire et permet de vérifier les accès mémoires au prix (il est vrai) d'une recompilation.