簡體   English   中英

Python 嵌入 C++

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM