在 heap 上分配物件
******************

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 物件。未在該 Python 物件標頭
   (header) 中定義的欄位不會被初始化；呼叫者會擁有那個對於物件的唯一參
   照（物件的參照計數為一）。記憶體分配大小由 type 物件的
   "tp_basicsize" 欄位來指定。

   注意，如果 *typeobj* 有 "Py_TPFLAGS_HAVE_GC" 設定，則此函式不適用。
   對於這種物件，請改用 "PyObject_GC_New()"。

PyObject_NewVar(TYPE, typeobj, size)

   使用 C 的結構型別 *TYPE* 和 Python 的型別物件 *typeobj*
   ("PyTypeObject*") 分配一個新的 Python 物件。未在該 Python 物件標頭
   中定義的欄位不會被初始化。記憶體空間預留了 *TYPE* 結構大小再加上
   *typeobj* 物件中 "tp_itemsize" 欄位提供的 *size* ("Py_ssize_t") 欄
   位的值。這對於實現如 tuple 這種能夠在建立期間決定自己大小的物件是很
   實用的。將欄位的陣列嵌入到相同的記憶體分配中可以減少記憶體分配的次
   數，這提高了記憶體管理的效率。

   注意，如果 *typeobj* 有 "Py_TPFLAGS_HAVE_GC" 設定，則此函式不適用。
   對於這種物件，請改用 "PyObject_GC_NewVar()"。

PyObject _Py_NoneStruct

   這個物件像是 Python 中的 "None"。它只應該透過 "Py_None" 巨集來存取
   ，該巨集的拿到指向該物件的指標。

也參考:

  模組物件
     分配記憶體和建立擴充模組。


Deprecated aliases
==================

These are *soft deprecated* aliases to existing functions and macros.
They exist solely for backwards compatibility.

+----------------------------------------------------+----------------------------------------------------+
| Deprecated alias                                   | Function                                           |
|====================================================|====================================================|
| PyObject_NEW(type, typeobj)                        | "PyObject_New"                                     |
+----------------------------------------------------+----------------------------------------------------+
| PyObject_NEW_VAR(type, typeobj, n)                 | "PyObject_NewVar"                                  |
+----------------------------------------------------+----------------------------------------------------+
| PyObject_INIT(op, typeobj)                         | "PyObject_Init()"                                  |
+----------------------------------------------------+----------------------------------------------------+
| PyObject_INIT_VAR(op, typeobj, n)                  | "PyObject_InitVar()"                               |
+----------------------------------------------------+----------------------------------------------------+
| PyObject_MALLOC(n)                                 | "PyObject_Malloc()"                                |
+----------------------------------------------------+----------------------------------------------------+
| PyObject_REALLOC(p, n)                             | "PyObject_Realloc()"                               |
+----------------------------------------------------+----------------------------------------------------+
| PyObject_FREE(p)                                   | "PyObject_Free()"                                  |
+----------------------------------------------------+----------------------------------------------------+
| PyObject_DEL(p)                                    | "PyObject_Free()"                                  |
+----------------------------------------------------+----------------------------------------------------+
| PyObject_Del(p)                                    | "PyObject_Free()"                                  |
+----------------------------------------------------+----------------------------------------------------+
