Envoyé par Emmanuel Delahaye
On se tue à te le dire : ADT.
Si l'utilisateur ne sait pas où sont les variables, il ne pourra pas les modifier. L'accès est indirect via un pointeur 'anonyme' (une sorte de void *, mais typé).
Evidemment, on ne peut empêcher un utilisateur de lire les données à partir de cette adresse, et même de les écraser avec un memset() ou un pointeur typé. Mais au moins, on aura essayé de rendre l'accès plus difficile.
Il existe cependant une autre technique, plus compliquée à mettre en oeuvre et d'usage moins universel, c'est de retourner non pas une adresse, mais un numéro unique géré en interne dans la bibliothèque (mémoire interne statique indispensable, ce qui rend le code non réentrant).
Comme ce n'est pas une adresse, on ne peut plus l'utiliser pour accéder aux données.
C'est le principe des File Descriptors POSIX.1 (open(), socket() etc.)