Python嵌入c++内存泄漏

python embed in c++ memory leak

本文关键字:泄漏 内存 c++ 嵌入 Python      更新时间:2023-10-16

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

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