Allocating Objects on the Heap¶
- PyObject*
_PyObject_New
(PyTypeObject *type)¶ - 返回值:新引用。
- PyVarObject*
_PyObject_NewVar
(PyTypeObject *type, Py_ssize_t size)¶ - 返回值:新引用。
- PyObject*
PyObject_Init
(PyObject *op, PyTypeObject *type)¶ - 返回值:借用引用。
使用其类型和初始引用初始化新分配的对象op。返回已初始化的对象。如果类型指示对象参与循环垃圾检测器,则将其添加到检测器的观察对象集合中。对象的其他字段不受影响。
- PyVarObject*
PyObject_InitVar
(PyVarObject *op, PyTypeObject *type, Py_ssize_t size)¶ - 返回值:借用引用。
这做的一切
PyObject_Init()
,并且也初始化一个可变大小的对象的长度信息。
- TYPE*
PyObject_New
(TYPE, PyTypeObject *type)¶ - 返回值:新引用。
使用C结构类型TYPE和Python类型对象类型分配新的Python对象。未由Python对象标题定义的字段未初始化;对象的引用计数将为一。内存分配的大小由类型对象的
tp_basicsize
字段确定。
- TYPE*
PyObject_NewVar
(TYPE, PyTypeObject *type, Py_ssize_t size)¶ - 返回值:新引用。
使用C结构类型TYPE和Python类型对象类型分配新的Python对象。未由Python对象标题定义的字段未初始化。分配的内存允许由类型的
tp_itemsize
字段指定的大小的TYPE结构加上大小字段。这对于实现像元组的对象很有用,这些对象能够在构建时确定它们的大小。将字段数组嵌入到同一分配中减少了分配的数量,提高了内存管理效率。
- void
PyObject_Del
(PyObject *op)¶ 使用
PyObject_New()
或PyObject_NewVar()
释放分配给对象的内存。这通常从对象类型中指定的tp_dealloc
处理程序调用。由于内存不再是有效的Python对象,因此在调用后不应访问对象的字段。
也可以看看
PyModule_Create()
- 分配和创建扩展模块。