ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
### 导航 - [索引](../genindex.xhtml "总目录") - [模块](../py-modindex.xhtml "Python 模块索引") | - [下一页](structures.xhtml "Common Object Structures") | - [上一页](objimpl.xhtml "对象实现支持") | - ![](https://box.kancloud.cn/a721fc7ec672275e257bbbfde49a4d4e_16x16.png) - [Python](https://www.python.org/) » - zh\_CN 3.7.3 [文档](../index.xhtml) » - [Python/C API 参考手册](index.xhtml) » - [对象实现支持](objimpl.xhtml) » - $('.inline-search').show(0); | # 在堆中分配对象 [PyObject](structures.xhtml#c.PyObject "PyObject")\* `_PyObject_New`([PyTypeObject](type.xhtml#c.PyTypeObject "PyTypeObject") *\*type*)*Return value: New reference.*[PyVarObject](structures.xhtml#c.PyVarObject "PyVarObject")\* `_PyObject_NewVar`([PyTypeObject](type.xhtml#c.PyTypeObject "PyTypeObject") *\*type*, Py\_ssize\_t *size*)*Return value: New reference.*[PyObject](structures.xhtml#c.PyObject "PyObject")\* `PyObject_Init`([PyObject](structures.xhtml#c.PyObject "PyObject") *\*op*, [PyTypeObject](type.xhtml#c.PyTypeObject "PyTypeObject") *\*type*)*Return value: Borrowed reference.*为新分配的对象 *op* 初始化它的类型和引用。返回初始化后的对象。如果 *type* 声明这个对象参与循环垃圾检测,那么这个对象会被添加进垃圾检测的对象集中。这个对象的其他字段不会被影响。 [PyVarObject](structures.xhtml#c.PyVarObject "PyVarObject")\* `PyObject_InitVar`([PyVarObject](structures.xhtml#c.PyVarObject "PyVarObject") *\*op*, [PyTypeObject](type.xhtml#c.PyTypeObject "PyTypeObject") *\*type*, Py\_ssize\_t *size*)*Return value: Borrowed reference.*它的功能和 [`PyObject_Init()`](#c.PyObject_Init "PyObject_Init") 一样,并且初始化变量大小的对象的长度。 TYPE\* `PyObject_New`(TYPE, [PyTypeObject](type.xhtml#c.PyTypeObject "PyTypeObject") *\*type*)*Return value: New reference.*使用C的数据结构类型 *TYPE* 和Python的类型对象 *type* 分配一个新的Python对象。Python对象头文件中没有定义的字段不会被初始化;对象的引用计数为1。内存分配大小由type对象中的 [`tp_basicsize`](typeobj.xhtml#c.PyTypeObject.tp_basicsize "PyTypeObject.tp_basicsize") 字段决定。 TYPE\* `PyObject_NewVar`(TYPE, [PyTypeObject](type.xhtml#c.PyTypeObject "PyTypeObject") *\*type*, Py\_ssize\_t *size*)*Return value: New reference.*使用C的数据结构类型 *TYPE* 和Python的类型对象 *type* 分配一个新的Python对象。Python对象头文件中没有定义的字段不会被初始化。被分配的内存空间预留了 *TYPE* 结构加 *type* 对象中 [`tp_itemsize`](typeobj.xhtml#c.PyTypeObject.tp_itemsize "PyTypeObject.tp_itemsize") 字段提供的 *size* 字段的值。这对于实现类似元组这种能够在构造期决定自己大小的对象是很实用的。将字段的数组嵌入到相同的内存分配中可以减少内存分配的次数,这提高了内存分配的效率。 void `PyObject_Del`([PyObject](structures.xhtml#c.PyObject "PyObject") *\*op*)释放由 [`PyObject_New()`](#c.PyObject_New "PyObject_New") 或者 [`PyObject_NewVar()`](#c.PyObject_NewVar "PyObject_NewVar") 分配内存的对象。这通常由对象的type字段定义的 [`tp_dealloc`](typeobj.xhtml#c.PyTypeObject.tp_dealloc "PyTypeObject.tp_dealloc") 处理函数来调用。调用这个函数以后op对象中的字段都不可以被访问,因为原分配的内存空间已不再是一个有效的Python对象。 [PyObject](structures.xhtml#c.PyObject "PyObject")`_Py_NoneStruct`像 `None` 一样的Python对象。这个对象仅可以使用 [`Py_None`](none.xhtml#c.Py_None "Py_None") 宏访问,这个宏取得指向这个对象的指针。 参见 [`PyModule_Create()`](module.xhtml#c.PyModule_Create "PyModule_Create")分配内存和创建扩展模块。 ### 导航 - [索引](../genindex.xhtml "总目录") - [模块](../py-modindex.xhtml "Python 模块索引") | - [下一页](structures.xhtml "Common Object Structures") | - [上一页](objimpl.xhtml "对象实现支持") | - ![](https://box.kancloud.cn/a721fc7ec672275e257bbbfde49a4d4e_16x16.png) - [Python](https://www.python.org/) » - zh\_CN 3.7.3 [文档](../index.xhtml) » - [Python/C API 参考手册](index.xhtml) » - [对象实现支持](objimpl.xhtml) » - $('.inline-search').show(0); | © [版权所有](../copyright.xhtml) 2001-2019, Python Software Foundation. Python 软件基金会是一个非盈利组织。 [请捐助。](https://www.python.org/psf/donations/) 最后更新于 5月 21, 2019. [发现了问题](../bugs.xhtml)? 使用[Sphinx](http://sphinx.pocoo.org/)1.8.4 创建。