Alocar objetos na 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.

Inicializa um objeto op recém-alocado com seu tipo e sua referência inicial. Retorna o objeto inicializado. Se type indicar no detector de lixo cíclico que o objeto participa, 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.

Aloca um novo objeto Python usando o tipo de estrutura C TYPE e o tipo de objeto Python type. Campos não definidos no cabeçalho do objeto Python não são inicializados; a contagem de referências 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.

Aloca 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 tp_itemsize do tipo type. Isto é útil para implementar objetos como tuplas, que são capazes de determinar seu tamanho em tempo de construção. Incorporando o vetor 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 a 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