#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?