python嵌入在c ++内存泄漏中

时间:2015-09-15 10:25:01

标签: python c++

当我在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();  
 }

1 个答案:

答案 0 :(得分:0)

您没有释放数据列表中的对象。 其中的每个项目也都有引用计数。