Python嵌入C++

2024-10-06 13:24:08 发布

您现在位置:Python中文网/ 问答频道 /正文

我有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.......

}

Tags: 代码pyreleaseifdopyobjectinsertst
1条回答
网友
1楼 · 发布于 2024-10-06 13:24:08

PyTuple_SetItemsteals对该项目的引用。不需要减少对该项的引用,因为您不再拥有对该项的引用。您需要减少元组的引用

如果在那之后你仍然有错误,那么你还有其他的错误

相关问题 更多 >