Lorsqu'une bibliothèque gère certaines structures de données pour le compte d'un programme (par exemple, les fenêtres d'une application graphique sont gérées par le système d'exploitation), elle conserve généralement le contenu de ces structures privées. Cependant, il est généralement utile que le programme conserve certaines données supplémentaires spécifiques à l'utilisation de ces structures par le programme. Par conséquent, une bibliothèque donnera souvent accès à un champ (souvent appelé données utilisateur) qu'il stocke avec chaque structure. Une utilisation courante du champ de données utilisateur par un programme consiste à allouer de la mémoire chaque fois que le programme demande à la bibliothèque de créer une structure, et à mémoriser le pointeur sur cette mémoire dans le champ de données utilisateur fourni par la bibliothèque, d'où le terme userdata pointer.