我有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
steals对该项目的引用。不需要减少对该项的引用,因为您不再拥有对该项的引用。您需要减少元组的引用如果在那之后你仍然有错误,那么你还有其他的错误
相关问题 更多 >
编程相关推荐