Alocando objetos na heap
************************

PyObject *_PyObject_New(PyTypeObject *type)
    *Retorna valor: Nova referência.*

PyVarObject *_PyObject_NewVar(PyTypeObject *type, Py_ssize_t size)
    *Retorna valor: Nova referência.*

PyObject *PyObject_Init(PyObject *op, PyTypeObject *type)
    *Retorna valor: Referência emprestada.** Part of the Stable ABI.*

   Inicializa um objeto *op* recém-alocado com seu tipo e referência
   inicial.  Retorna o objeto inicializado. Se o *type* indica que o
   objeto participa no detector de lixo cíclico ele é adicionado ao
   grupo do detector de objetos observados. Outros campos do objeto
   não são afetados.

PyVarObject *PyObject_InitVar(PyVarObject *op, PyTypeObject *type, Py_ssize_t size)
    *Retorna valor: Referência emprestada.** Part of the Stable ABI.*

   Isto faz tudo que o "PyObject_Init()" faz e também inicializa a
   informação de comprimento para um objeto de tamanho variável.

TYPE *PyObject_New(TYPE, PyTypeObject *type)
    *Retorna valor: Nova referência.*

   Allocate a new Python object using the C structure type *TYPE* and
   the Python type object *type*.  Fields not defined by the Python
   object header are not initialized. The caller will own the only
   reference to the object (i.e. its reference count will be one). The
   size of the memory allocation is determined from the "tp_basicsize"
   field of the type object.

TYPE *PyObject_NewVar(TYPE, PyTypeObject *type, Py_ssize_t size)
    *Retorna valor: Nova referência.*

   Aloca um novo objeto Python usando o tipo de estrutura do C *TYPE*
   e o objeto Python do tipo *type*. Campos não definidos pelo
   cabeçalho do objeto Python não são inicializados. A memória alocada
   permite a estrutura *TYPE* e os campos *size* do tamanho dado pelo
   campo "tp_itemsize" do tipo *type*. Isto é útil para implementar
   objetos como tuplas, as quais são capazes de determinar seu tamanho
   no tempo da construção. Incorporando o vetor de campos dentro da
   mesma alocação diminuindo o numero de alocações, melhorando a
   eficiência do gerenciamento de memória.

void PyObject_Del(void *op)

   Libera memória alocada a um objeto usando "PyObject_New()" ou
   "PyObject_NewVar()". Isto é normalmente chamado pelo "tp_dealloc"
   manipulador especificado no tipo do objeto. Os campos do objeto não
   devem ser acessados após esta chamada como a memória não é mais um
   objeto Python válido.

PyObject _Py_NoneStruct

   Objeto o qual é visível no Python como "None". Isto só deve ser
   acessado usando a macro "Py_None", o qual avalia como um ponteiro
   para este objeto.

Ver também:

  "PyModule_Create()"
     Para alocar e criar módulos de extensão.
