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(void *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