Allouer des objets dans le tas

PyObject* _PyObject_New(PyTypeObject *type)
Return value: New reference.
PyVarObject* _PyObject_NewVar(PyTypeObject *type, Py_ssize_t size)
Return value: New reference.
PyObject* PyObject_Init(PyObject *op, PyTypeObject *type)
Return value: Borrowed reference.

Permet d’initialiser un objet op nouvellement alloué ainsi que son type et sa référence initiale. Renvoie l’objet initialisé. La présence de type indique que l’objet doit être traité par le détecteur d’ordures cycliques, il est de ce fait ajouté à l’ensemble du détecteur d’objets observés. Les autres champs de l’objet ne sont pas affectés.

PyVarObject* PyObject_InitVar(PyVarObject *op, PyTypeObject *type, Py_ssize_t size)
Return value: Borrowed reference.

Ça fait tout ce que PyObject_Init() fait, et il initialise également l’information de la longueur pour un objet de taille variable.

TYPE* PyObject_New(TYPE, PyTypeObject *type)
Return value: New reference.

Alloue un nouvel objet Python en utilisant le type de structure C TYPE et l’objet de type python type. Les champs non définis par l’en-tête de l’objet Python ne sont pas initialisés; le compteur de la référence objet sera un. La taille de l’allocation de la mémoire est déterminé par le champs de l’objet type tp_basicsize.

TYPE* PyObject_NewVar(TYPE, PyTypeObject *type, Py_ssize_t size)
Return value: New reference.

Alloue un nouvel objet Python en utilisant le type de structure C TYPE et l’objet de type Python type. Les champs non définis par l’en-tête de l’objet Python ne sont pas initialisés. La mémoire allouée autorise pour la structure TYPE plus size champs de la taille donnée par le champ de type tp_itemsize. C’est utile pour l’implémentation d’objets comme les tuples, qui sont capables de déterminer leur taille durant le temps de la construction. Intégrer l’array de champs dans la même allocation diminue le nombre d’allocations, mettant à l’épreuve l’efficacité de la gestion de la mémoire.

void PyObject_Del(PyObject *op)

Libère la mémoire allouée à un objet utilisant PyObject_New() ou PyObject_NewVar(). C’est normalement appelé par le gestionnaire tp_dealloc spécifié dans le type d’objet. Le champ de l’objet ne devrait pas être accessible après cet appel puisque la mémoire n’est plus un objet Python valide.

PyObject _Py_NoneStruct

Objet qui est visible en tant que None dans Python. Ne devrait être accessible uniquement en utilisant la macro Py_None, qui évalue cet objet à un pointeur.

Voir aussi

PyModule_Create()
Allouer et créer des modules d’extension.