# 힙에 객체 할당하기

PyObject *_PyObject_New(PyTypeObject *type)
  반환값: 새 참조.

PyVarObject *_PyObject_NewVar(PyTypeObject *type, Py_ssize_t size)
  반환값: 새 참조.

PyObject *PyObject_Init(PyObject *op, PyTypeObject *type)
  반환값: 빌린 참조. Part of the 안정 ABI.

  새로 할당된 객체 op를 형과 초기 참조로 초기화합니다. 초기화된 객체를 반환합니다. 객체의 다른 필드는 영향을 받지 않습니다.

PyVarObject *PyObject_InitVar(PyVarObject *op, PyTypeObject *type, Py_ssize_t size)
  반환값: 빌린 참조. Part of the 안정 ABI.

  이것은 `PyObject_Init()`가 수행하는 모든 작업을 수행하고, 가변 크기 객체의 길이 정보도 초기화합니다.

PyObject_New(TYPE, typeobj)

  C 구조체 형 TYPE과 파이썬 형 객체 typeobj (`PyTypeObject*`) 를 사용하여 새로운 파이썬 객체를 할당합니다. 파이썬 객체 헤더로 정의되지 않은 필드는 초기화되지 않습니다. 호출자는 객체에 대한 유일한 참조를 소유하게 됩니다 (즉, 객체의 참조 횟수는 1이 됩니다). 메모리 할당의 크기는 형 객체의 `tp_basicsize` 필드에서 결정됩니다.

  Note that this function is unsuitable if typeobj has `Py_TPFLAGS_HAVE_GC` set. For such objects, use `PyObject_GC_New()` instead.

PyObject_NewVar(TYPE, typeobj, size)

  C 구조체 형 TYPE과 파이썬 타입 형 typeobj (`PyTypeObject*`) 를 사용하여 새로운 파이썬 객체를 할당합니다. 파이썬 객체 헤더로 정의되지 않은 필드는 초기화되지 않습니다. 할당된 메모리는 TYPE 구조체에 더해 typeobj의 `tp_itemsize` 필드에 의해 주어진 크기의 size (`Py_ssize_t`) 필드를 허용합니다. 이는 튜플과 같은 객체를 구현할 때 유용합니다. 튜플은 만들 때 크기를 결정할 수 있습니다. 같은 할당에 필드 배열을 포함 시키면, 할당 횟수가 줄어들어, 메모리 관리 효율성이 향상됩니다.

  Note that this function is unsuitable if typeobj has `Py_TPFLAGS_HAVE_GC` set. For such objects, use `PyObject_GC_NewVar()` instead.

void PyObject_Del(void *op)

  `PyObject_New` 나 `PyObject_NewVar`를 사용한 객체에 할당된 메모리를 해제합니다. 이것은 일반적으로 객체의 형에 지정된 `tp_dealloc` 처리기에서 호출됩니다. 메모리가 더는 유효한 파이썬 객체가 아니므로, 이 호출 후에는 객체의 필드에 액세스해서는 안 됩니다.

PyObject _Py_NoneStruct

  파이썬에서 `None`으로 노출되는 객체. 이 객체에 대한 포인터로 평가되는 `Py_None` 매크로를 사용해서 액세스해야 합니다.

더 보기

`PyModule_Create()`

  확장 모듈을 할당하고 만듭니다.