Python для c возвращает free(): недопустимый указатель

#python #c #module

#python #c #модуль

Вопрос:

У меня есть модуль Python, который взаимодействует с c-библиотекой. В одном из методов указатель на байтовый массив определенного размера отправляется в качестве аргумента методу, и в методе этот указатель заменяется указателем на новый массив большего размера, а старый массив освобождается. Проблема в том, что python все еще пытается освободить старые данные, когда процедура заканчивается выдачей

 free(): invalid pointer
 

Указатель, отправленный в метод, настраивается следующим образом

     e.sizedata = 4
    p = (c_ubyte*4)()
    p[0] = 0x80
    p[1] = 0x02
    p[2] = 0x1B
    p[3] = 0x22
    e.pdata = cast(p, POINTER(c_ubyte))
 

Есть ли способ справиться с этим без изменения библиотеки c?