在堆上分配对象¶
-
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.
初始化新分配的对象 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结构类型分配新的python对象 TYPE 以及python类型的对象 type . 未由python对象头定义的字段未初始化;对象的引用计数将为1。内存分配的大小由
tp_basicsize
类型对象的字段。
-
TYPE *PyObject_NewVar(TYPE, PyTypeObject *type, Py_ssize_t size)¶
- Return value: New reference.
使用C结构类型分配新的python对象 TYPE 以及python类型的对象 type . 未由python对象头定义的字段未初始化。分配的内存允许 TYPE 结构加 size 字段的大小由
tp_itemsize
领域 type . 这对于实现像元组这样的对象很有用,因为元组能够在构建时确定它们的大小。将字段数组嵌入到同一个分配中可以减少分配的数量,从而提高内存管理效率。
-
void PyObject_Del(void *op)¶
释放分配给对象的内存
PyObject_New()
或PyObject_NewVar()
. 这通常是从tp_dealloc
对象类型中指定的处理程序。调用后不应访问对象的字段,因为内存不再是有效的Python对象。
参见
PyModule_Create()
分配和创建扩展模块。