c调用python, 内存泄露问题,弄了好久,请教大神,万分感激! 10C

空间都释放了的,为什么多次调用此函数时,占用内存长的很快,确认了调用的python函数没有内存泄露问题
bool CallPyWaveletConvert(STWaveletConvertInfo& info)
{
PyObject* pArgs = PyTuple_New(1);
PyObject* pList = PyList_New(0);
int iLen = info.m_iInputDataLen;
for (int i = 0; i < iLen; i++)
{
PyObject* pValue = PyFloat_FromDouble(info.m_fInputData[i]);
PyList_Append(pList, pValue);
}

PyTuple_SetItem(pArgs, 0, pList);
PyObject* pRet = PyEval_CallObject(pFuncWaveletConvert, pArgs);

info.m_iOutputDataLen = PyList_Size(pRet);
for(int i=0;i<info.m_iOutputDataLen;++i)
{
PyObject *pNewAge = PyList_GetItem(pRet,i);

PyArg_Parse(pNewAge, "d", &info.m_fOutputData[i]);

}

Py_XDECREF(pList);
Py_XDECREF(pRet);

return true;
}

4个回答

zhangfeng19880710
zhangfeng19880710 谢谢大神!但Py_Initialize和Py_Finalize是在进程进入与退出时调用,功能函数中不能使用的
3 年多之前 回复

代码本身好像没问题,但是检查一下 sys.path.append和sys.path.remove是否相匹配,保证添加到Python虚拟机中的路径,用完之后要remove

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问