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 est suffisante pour 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 à la construction. Allouer
   les champs en même temps que l'objet diminue le nombre
   d'allocations, améliorant ainsi les performances.

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.
