У меня есть строка байтов, которая передается в метод cython, и мне нужно передать ее в функцию c:
def stuff(bytes b):
#b is b'something'
some_c_function(b, len(b))
Указатель, который я передал, сохраняется в некоторой структуре внутри C-land. К тому времени, когда он используется, b
исчезает, поэтому я получаю ошибку сегментации. Как мне сохранить его вне функции?
Я пробовал что-то вроде этого:
from libc.stdlib import malloc, memcpy
def stuff(bytes b):
cdef char *data
data_len = len(b)
data = malloc(data_len)
memcpy(data, b, data_len)
some_c_function(data, data_len)
Но я получаю сообщение об ошибке malloc
: Obtaining char * from temporary Python value
.