Alocando 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.
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)¶ - 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_basicsizedo 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 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_itemsizedo 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()ouPyObject_NewVar(). Isto é normalmente chamado pelotp_deallocmanipulador 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 macroPy_None, o qual avalia como um ponteiro para este objeto.
Ver também
PyModule_Create()Para alocar e criar módulos de extensão.