2009-03-02 4 views
3

J'ai cherché une bonne explication mais n'en trouve pas.Quelle est la bonne définition d'un "pointeur userdata"?

Je pourrais essayer d'écrire moi-même mais je préférerais que quelqu'un avec un meilleur anglais pourrait me expliquer cela pour Zan Lynx dans le commentaire here.

... et il semble qu'il devrait y avoir une bonne explication quelque part, pourquoi pas ici?

Répondre

3

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.

3

Regardez sqlite3_exec() - il appelle un rappel (troisième paramètre) pour chaque ligne extraite et passe un pointeur que vous fournissez (quatrième paramètre) dans ce rappel. Cela peut être un pointeur vers n'importe quel objet que vous souhaitez - vous devez le lancer de manière appropriée avant de pouvoir accéder à l'objet pointé. Cet objet s'appelle un objet userdata et un pointeur est appelé un pointeur userdata.

Dans le cas de sqlite3_exec(), vous pouvez passer un pointeur vers un conteneur qui doit stocker toutes les lignes de la table récupérées à la fin de la requête.

Questions connexes