# PickleBuffer 对象

Added in version 3.8.

`pickle.PickleBuffer` 对象包装了一个 提供缓冲区的对象 用于配合 `pickle` 模块进行带外数据传输。

PyTypeObject PyPickleBuffer_Type

  这个 `PyTypeObject` 的实例表示 Python pickle 缓冲区类型。这与 Python 层级的 `pickle.PickleBuffer` 是同一对象。

int PyPickleBuffer_Check(PyObject *op)

  如果 op 是一个 pickle 缓冲区实例则返回真值。此函数总是会成功执行。

PyObject *PyPickleBuffer_FromObject(PyObject *obj)

  基于 obj 创建一个 pickle 缓冲区。

  如果 obj 不支持 缓冲区协议 则此函数执行将失败。

  成功时，返回一个新的 pickle 缓冲区实例。失败时，设置一个异常并返回 `NULL`。

  等同于在 Python 中调用 `pickle.PickleBuffer` 并传入 obj。

const Py_buffer *PyPickleBuffer_GetBuffer(PyObject *picklebuf)

  获取一个指向 pickle 缓冲区所包装的底层 `Py_buffer` 的指针。

  只要 picklebuf 保持存活而未被释放则返回的指针就将有效。调用方不可修改或释放返回的 `Py_buffer`。如果 pickle 缓冲区被释放，则会引发 `ValueError`。

  成功时，返回一个指向缓冲区视图的指针。失败时，设置一个异常并返回 `NULL`。

int PyPickleBuffer_Release(PyObject *picklebuf)

  释放由 PickleBuffer 占用的底层缓冲区。

  成功时返回 `0`。失败时，设置一个异常并返回 `-1`。

  等同于在 Python 中调用 `pickle.PickleBuffer.release()`。