MemoryView 对象
***************

一个 "memoryview" 对象将 C 级别的 缓冲区接口 暴露为一个可以像任何其他
对象一样传递的 Python 对象。

PyTypeObject PyMemoryView_Type
    * 属于 稳定 ABI.*

   这个 "PyTypeObject" 的实例代表 Python memoryview 类型。这与 Python
   层级的 "memoryview" 是同一对象。

PyObject *PyMemoryView_FromObject(PyObject *obj)
    *返回值：新的引用。** 属于 稳定 ABI.*

   从提供缓冲区接口的对象创建 memoryview 对象。如果 *obj* 支持可写缓冲
   区导出，则 memoryview 对象将可以被读/写，否则它可能是只读的，也可以
   是导出器自行决定的读/写。

PyBUF_READ
    * 属于 稳定 ABI 自 3.11 版起.*

   用于请求只读缓冲区的旗标。

PyBUF_WRITE
    * 属于 稳定 ABI 自 3.11 版起.*

   用于请求可写缓冲区的旗标。

PyObject *PyMemoryView_FromMemory(char *mem, Py_ssize_t size, int flags)
    *返回值：新的引用。** 属于 稳定 ABI 自 3.7 版起.*

   使用 *mem* 作为底层缓冲区创建一个 memoryview 对象。 *flags* 可以是
   "PyBUF_READ" 或者 "PyBUF_WRITE" 之一。

   Added in version 3.3.

PyObject *PyMemoryView_FromBuffer(const Py_buffer *view)
    *返回值：新的引用。** 属于 稳定 ABI 自 3.11 版起.*

   创建一个包含给定缓冲区结构 *view* 的 memoryview 对象。 对于简单的字
   节缓冲区，"PyMemoryView_FromMemory()" 是首选函数。

PyObject *PyMemoryView_GetContiguous(PyObject *obj, int buffertype, char order)
    *返回值：新的引用。** 属于 稳定 ABI.*

   从定义了缓冲区接口的对象创建一个指向 *contiguous* 内存块（以 'C' 或
   'F'ortran *order* 排列）的 memoryview 对象。如果内存是连续的，则
   memoryview 对象指向原始内存。否则，将创建一份副本并且 memoryview 指
   向新的 bytes 对象。

   *buffertype* 可以为 "PyBUF_READ" 或 "PyBUF_WRITE" 中的一个。

int PyMemoryView_Check(PyObject *obj)

   如果 *obj* 是一个 memoryview 对象则返回真值。目前不允许创建
   "memoryview" 的子类。 此函数总是会成功执行。

Py_buffer *PyMemoryView_GET_BUFFER(PyObject *mview)

   返回指向 memoryview 的导出缓冲区私有副本的指针。 *mview* **必须**
   是一个 memoryview 实例；这个宏不检查它的类型，你必须自己检查，否则
   你将面临崩溃风险。

PyObject *PyMemoryView_GET_BASE(PyObject *mview)

   返回 memoryview 所基于的导出对象的指针，或者如果 memoryview 已由函
   数 "PyMemoryView_FromMemory()" 或 "PyMemoryView_FromBuffer()" 创建
   则返回 "NULL"。 *mview* **必须** 是一个 memoryview 实例。
