# Alocando objetos em pilha

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.

  Inicialize um objeto op recém alocado com seu tipo e sua referência inicial. Retorna o objeto incializado. Se * type * indica que o objeto participa do 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)
  Return value: Borrowed reference.

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

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

  Aloque um novo objeto Python usando a estrutura C digite TYPE e o objecto Python type. Campos não definidos no cabeçalho do objeto Python não são inicializados; a contagem de referência do objeto será um deles. O tamanho da alocação de memória é determinado do campo `tp_basicsize` do objeto tipo.

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

  Alocar um novo objeto Python usando o tipo de estrutura C TYPE e o tipo de objeto Python 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: c: member: ~ PyTypeObject.tp_itemsize de * type *. Isto é útil para implementar objetos como tuplas, que são capazes de determinar seu tamanho em tempo de construção. Incorporando o array de campos dentro da mesma alocação diminuindo o numero de alocações, melhorando a eficiência de gerenciamento de memória.

void `PyObject_Del`(PyObject *op)

  Libera memória alocada para um objeto usando `PyObject_New()` ou `PyObject_NewVar()`. Isso é normalmente chamado por `tp_dealloc` manipulador especificado no tipo do objeto. Os campos do objeto não devem ser acessados ​​após esta chamada, já que a memória não é mais um objeto Python válido.

PyObject `_Py_NoneStruct`

  Objeto que é visível em Python como `None`. Isso só deve ser acessado usando o `Py_None` macro, que avalia como um ponteiro para este objeto.

Ver também

`PyModule_Create()`

  Para alocar e criar módulos de extensão