On this page
在堆上分配对象
PyObject *
_PyObject_New
(PyTypeObject *类型)- 返回值:新参考.
PyVarObject *
_PyObject_NewVar
(PyTypeObject ** type *,Py_ssize_t * size *)- 返回值:新参考.
PyObject *
PyObject_Init
(PyObject *op ,PyTypeObject type *)- *返回值:借用参考。
使用类型和初始引用初始化新分配的对象* op 。返回初始化的对象。如果 type *指示对象参与了循环垃圾检测器,则将其添加到检测器的观察对象集。对象的其他字段不受影响。
- PyVarObject *
PyObject_InitVar
(PyVarObject *op ,PyTypeObject type *,Py_ssize_t * size *)- *返回值:借用参考。
PyObject_Init()会执行所有操作,并且还会初始化可变大小对象的长度信息。
- TYPE *
PyObject_New
(TYPE,PyTypeObject ** type *)- 返回值:新参考.
使用 C 结构类型* TYPE 和 Python 类型对象 type *分配一个新的 Python 对象。未由 Python 对象 Headers 定义的字段不会初始化;该对象的引用计数将为 1.内存分配的大小由类型对象的tp_basicsize字段确定。
- TYPE *
PyObject_NewVar
(TYPE,PyTypeObject ** type *,Py_ssize_t * size *)- 返回值:新参考.
使用 C 结构类型* TYPE 和 Python 类型对象 type 分配一个新的 Python 对象。未由 Python 对象 Headers 定义的字段未初始化。分配的内存允许 TYPE 结构加上 size 字段,该字段的大小由 type *的tp_itemsize字段给出。这对于实现 Tuples 之类的对象很有用,这些对象能够在构造时确定其大小。将字段数组嵌入相同的分配中可以减少分配的数量,从而提高内存 Management 效率。
无效
PyObject_Del
(void ** op *)- 释放使用PyObject_New()或PyObject_NewVar()分配给对象的内存。通常从对象类型中指定的tp_dealloc处理函数中调用该方法。调用后不应访问该对象的字段,因为内存不再是有效的 Python 对象。
PyObject
_Py_NoneStruct
- 在 Python 中显示为
None
的对象。只能使用Py_None宏访问该宏,该宏的结果为指向该对象的指针。
- 在 Python 中显示为
See also
分配和创建扩展模块。