Я звоню GetExtendedTcpTable через ctypes в Python.
Для этого я объявляю следующие структуры:
class MIB_TCPROW_OWNER_PID(ctypes.Structure):
_fields_ = [('dwState', DWORD),
('dwLocalAddr', DWORD),
('dwLocalPort', DWORD),
('dwRemoteAddr', DWORD),
('dwRemotePort', DWORD),
('dwOwningPid', DWORD)]
И
class MIB_TCPTABLE_OWNER_PID(ctypes.Structure):
_fields_ = [('dwNumEntries', DWORD),
('table', MIB_TCPROW_OWNER_PID * ANY_SIZE)]
Где ANY_SIZE инициализируется посредством первого вызова GetExtendedTcpTable.
Мой вопрос: кто позаботится об освобождении памяти, занятой полем 'table' выше? Который является массивом структур MIB_TCPROW_OWNER_PID.
Или, может быть, мой вопрос должен быть таким: кто выделяет структуры MIB_TCPROW_OWNER_PID в массиве? GetExtendedTcpTable или Python?
Заранее спасибо!