在堆上分配对象

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  *opPyTypeObject  *type
Return value: Borrowed reference.

使用类型和初始引用初始化一个新分配对象op。返回初始化对象。如果type表示对象参与循环垃圾检测器,则将其添加到检测器的观察对象集中。对象的其他字段不受影响.

PyVarObject* PyObject_InitVar PyVarObject  *op,PyTypeObject  *type,Py_ssize_t  size
Return value: Borrowed reference.

这会做PyObject_Init()所做的一切,并初始化一个可变大小的对象的长度信息.

TYPE*​​ PyObject_New TYPE,PyTypeObject  *type
Return value: New reference.

使用C结构类型TYPE和thePython类型对象type。没有初始化Python对象headerare定义的字段;对象的引用计数为1。内存分配的大小由类型对象的tp_basicsize字段决定.

TYPE*​​ PyObject_NewVar TYPE,PyTypeObject  *type,Py_ssize_t  size
Return value: New reference.

使用C结构类型TYPE和thePython类型对象type分配一个新的Python对象。未初始化Python对象headerare未定义的字段。分配的内存允许TYPE structureplus size字段的大小由tp_itemsizetype字段给出。这对于实现像元组这样的对象很有用,这些对象可以在构造时确定它们的大小。将数组offields嵌入到同一个分配中会减少分配数量,提高内存管理效率.

void PyObject_Del PyObject  *op
使用PyObject_New()PyObject_NewVar()释放分配给对象的内存。这通常叫tp_dealloc在对象的类型中指定的处理程序。在此调用之后不应访问该对象的字段,因为内存不再是有效的Python对象.
PyObject _Py_NoneStruct
在Python中可见的对象None。这只能用Py_None宏,它计算指向thisobject的指针.

也可以看看

PyModule_Create()
分配和创建扩展模块.

评论被关闭。