在堆上分配对象¶
-
PyObject *_PyObject_New(PyTypeObject *type)¶
- 返回值:新的引用。
-
PyVarObject *_PyObject_NewVar(PyTypeObject *type, Py_ssize_t size)¶
- 返回值:新的引用。
-
PyObject *PyObject_Init(PyObject *op, PyTypeObject *type)¶
- 返回值:借入的引用。 属于 稳定 ABI.
为新分配的对象 op 初始化它的类型和初始引用。 返回初始化后的对象。 对象的其他字段不会被影响。
-
PyVarObject *PyObject_InitVar(PyVarObject *op, PyTypeObject *type, Py_ssize_t size)¶
- 返回值:借入的引用。 属于 稳定 ABI.
它的功能和
PyObject_Init()
一样,并且会初始化变量大小对象的长度信息。
-
PyObject_New(TYPE, typeobj)¶
使用 C 结构类型 TYPE 和 Python 类型对象 typeobj (
PyTypeObject*
) 分配一个新的 Python 对象。 f未在该 Python 对象标头中定义的字段不会被初始化。 调用方将拥有对该对象的唯一引用(即引用计数将为 1)。 内存分配的大小由类型对象的tp_basicsize
字段决定。
-
PyObject_NewVar(TYPE, typeobj, size)¶
使用 C 结构类型 TYPE 和 Python 类型对象 typeobj (
PyTypeObject*
) 分配一个新的 Python 对象。 未在该 Python 对象标头中定义的字段不会被初始化。 被分配的内存允许 TYPE 结构加 typeobj 的tp_itemsize
字段所给出的 size (Py_ssize_t
) 个字段。 这对于实现像元组这样能够在构造时确定其大小的对象来说很有用。 将字段数组嵌入到相同的内在分配中可减少内存分配的次数,这提高了内存管理效率。
-
void PyObject_Del(void *op)¶
Same as
PyObject_Free()
.
参见
PyModule_Create()
分配内存和创建扩展模块