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()
ouPyObject_NewVar()
. Isso é normalmente chamado portp_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 oPy_None
macro, que avalia como um ponteiro para este objeto.
Ver também
PyModule_Create()
Para alocar e criar módulos de extensão