Итак, я пытаюсь написать функцию C, которая принимает объект массива numpy, извлекает данные, выполняет некоторые манипуляции и возвращает другой массив c в виде объекта массива numpy.Все работает без проблем, и я использую оболочки Python, которые помогают легко манипулировать на стороне Python.Тем не менее, я сталкиваюсь с утечкой памяти.У меня есть выходной указатель типа double, который я malloc-ed и который я обертываю в объект массива Python перед возвратом его в вызывающую функцию python,
PyObject *arr;
int nd = 2;
npy_intp dims[] = {5, 10};
double *data = some_function_that_returns_a_double_star(x, y, z);
arr = PyArray_SimpleNewFromData(nd, dims, NPY_DOUBLE, (void *)data);
return arr;
Однако это создает утечку памяти, потому что данныеникогда не освобождается, и я сделал несколько поисков в Google, чтобы найти, что это проблема в таких приложениях, и решение нетривиально.Самый полезный ресурс, который я нашел на этом, это , приведенный здесь .Я не смог реализовать деструктор, о котором говорит эта страница, из данного примера.Может кто-то помочь мне с этим?Более конкретно, я ищу что-то вроде
PyObject *arr;
int nd = 2;
npy_intp dims[] = {5, 10};
double *data = some_function_that_returns_a_double_star(x, y, z);
arr = PyArray_SimpleNewFromData(nd, dims, NPY_DOUBLE, (void *)data);
some_destructor_that_plug_memLeak_due_to_data_star(args);
return arr;