Если это имеет значение, меня интересует ответ относительно Python 3.
Состояние документов ( здесь и здесь ), что PyBuffer_Release()
следует вызывать после PyArg_Parse*()
с s*
, y*
.
Ничего подобного не написано о Py_BuildValue()
. Это оплошность, или в случае Py_BuildValue()
достаточно simple Py_DECREF()
Вот мой конкретный случай:
uint8_t buf = (uint8_t *)malloc(bufSize);
PyObject *pyBuf = Py_BuildValue("y#", (char *)buf, bufSize);
free(buf);
// do something with pyBuf
// maybe a PyBuffer_Release(get_underlying_buffer(pyBuf)) here?
Py_DECREF(pyBuf);