Когда библиотека управляет некоторыми структурами данных от имени программы (например, окна в приложении с графическим интерфейсом управляются ОС), она обычно сохраняет содержимое этих структур закрытым. Однако, как правило, для программы полезно поддерживать некоторые дополнительные данные, специфичные для использования программой этих структур. Поэтому библиотека часто обеспечивает доступ к полю (часто называемому пользовательскими данными ), которое она хранит в каждой структуре.
Обычное использование поля пользовательских данных программой состоит в том, чтобы выделять некоторое количество памяти каждый раз, когда программа запрашивает библиотеку для создания структуры, и сохранять указатель на эту память в поле пользовательских данных, предоставленном библиотекой, следовательно, термин указатель пользовательских данных .