[英]Python embed into C++
我將 python 代碼嵌入到 C++ 中。 我是否需要release memory(Py_XDECREF)
PyObject* pValue 和 PyObject *pArgs?
當我做 Py_XDECREF(pArgs) 和 Py_XDECREF(pValue) 時,我有分段錯誤(核心轉儲)。 我認為 python 端仍在使用這些變量,而 c++ 嘗試釋放內存。 這個問題的最佳實踐是什么?
for(int i=0; i < 100: i++){
.......do sth.......
if (pModule != NULL) {
std::string st = jps.updateZone(worldx_y, lenVect);
PyObject* pValue = PyBytes_FromString(st.c_str());
if (pFunc_insert && PyCallable_Check(pFunc_insert)) {
PyObject *pArgs = PyTuple_New(1);
PyTuple_SetItem(pArgs, 0, pValue);
PyObject_CallObject(pFunc_insert, pArgs);
Py_XDECREF(pArgs);
}
Py_XDECREF(pValue);
}
......do sth.......
}
PyTuple_SetItem
竊取對項目的引用。 你並不需要decref的項目,因為你不再擁有對它的引用。 您確實需要 deref 元組。
如果在那之后您仍然遇到段錯誤,那么您還有其他一些錯誤。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.