Вы можете попробовать использовать файл подавления , который поставляется с исходным кодом Python
Чтение Python Valgrind README тоже неплохая идея!
Да, это типично. В больших системах память часто остается не освобожденной, и это нормально, если она является постоянной величиной и не пропорциональна истории работы системы. Интерпретатор Python попадает в эту категорию.
Возможно, вы можете отфильтровать вывод valgrind, чтобы сосредоточиться только на выделениях, сделанных в вашем расширении C?
Это довольно часто встречается в любой большой системе. Вы можете использовать систему подавления Valgrind , чтобы явно подавить предупреждения, которые вас не интересуют.
There is another option I found. James Henstridge has custom build of python which can detect the fact that python running under valgrind and in this case pymalloc allocator is disabled, with PyObject_Malloc/PyObject_Free passing through to normal malloc/free, which valgrind knows how to track.
Package available here: https://launchpad.net/~jamesh/+archive/python
Самый правильный вариант - сообщить Valgrind, что он должен перехватывать функции распределения Python. Вы должны исправить valgrind / coregrind / m_replacemalloc / vg_replace_malloc.c, добавив новые перехватчики для PyObject_Malloc, PyObject_Free, PyObject_Realloc, например:
ALLOC_or_NULL(NONE, PyObject_Malloc, malloc);
(обратите внимание, что soname для функций распределения пользователей должно быть NONE
)