当我在c ++中嵌入python时,我遇到了内存泄漏问题。
下面的代码是一个简化的部分,在运行时,内存越来越大,这似乎Py_DECREF
没有用。有没有办法通过循环收集内存,以便内存不会上升?因为当我有一个更复杂的项目时,内存消耗非常大。
#include <Python.h>
float test(double tedata[],int count){
PyObject *datalist=PyList_New(count);
for (int i=0;i<count;i++) {
PyList_SetItem(datalist,i,Py_BuildValue("f",tedata[i]));
}
Py_DECREF(datalist);
printf("for show more slowing");
return 0;
}
void main(){
float pr_label;
double tedata[]= {44.0093,4.4871,305.012201,3.1311,11.1491,109.388698,34.0742,0.04,43.913701};
int count = sizeof(tedata) / sizeof(double);
Py_Initialize();
for(int i=0;i<=500000;i++){
test(tedata,count);
}
Py_Finalize();
}
答案 0 :(得分:0)
您没有释放数据列表中的对象。 其中的每个项目也都有引用计数。