Выделение объектов в куче
-
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) -
Выделяет новый объект Python, используя тип структуры C TYPE и объект типа Python typeobj (
PyTypeObject*). Поля, не определённые заголовком объекта Python, не инициализируются. Вызывающий код будет владеть единственной ссылкой на объект (то есть счётчик ссылок будет равен единице). Размер выделяемой памяти определяется полемtp_basicsizeобъекта типа.
-
PyObject_NewVar(TYPE, typeobj, size) -
Выделяет новый объект Python, используя тип структуры C TYPE и объект типа Python typeobj (
PyTypeObject*). Поля, не определённые заголовком объекта Python, не инициализируются. Выделенная память вмещает структуру TYPE и size (Py_ssize_t) полей размером, заданным полемtp_itemsizeобъекта typeobj. Это полезно при реализации таких объектов, как кортежи, размер которых можно определить во время создания. Размещение массива полей в том же блоке выделенной памяти сокращает количество выделений памяти и повышает эффективность управления памятью.
-
void PyObject_Del(void *op) -
Освобождает память, выделенную объекту с помощью
PyObject_NewилиPyObject_NewVar. Обычно вызывается из обработчикаtp_dealloc, указанного в типе объекта. После этого вызова к полям объекта нельзя обращаться, так как память больше не является допустимым объектом Python.
-
PyObject _Py_NoneStruct -
Объект, представленный в Python как
None. Доступ к нему следует осуществлять только с помощью макросаPy_None, который вычисляется в указатель на этот объект.
См. также
-
PyModule_Create() -
Выделение памяти и создание модулей расширения.
© 2001–2024 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.12/c-api/allocation.html