Я пытаюсь создать словарь указателей на C structs . Моя функция C возвращает указатель на структуру, и я хочу добавить ее в словарь в Cython . Мой код компилируется нормально, но он выходит из строя, когда я запускаю его в коде Python "insertdict". Я хочу иметь возможность получить доступ к указателю структуры C позже в моем коде Cython из словаря.
Если я не приведу Foo как объект, код Cython не скомпилируется.
cython.pyx
def py_get_ptr(self):
Foo = get_remote_ptr(foo1, foo1, foo3)
self.mr_list[rma_buf] = <object> Foo
code.c
...
struct foo* get_remote_ptr(foo1, foo2, foo3)
{
struct foo* Foo;
// Foo gets assigned
return Foo;
}
Я получаю эту ошибку:
Program received signal SIGSEGV, Segmentation fault.
0x0000000000475797 in insertdict (value=0x7ffff055d420 <remote>, hash=8796075522393, key=0x7fffef4f9590, mp=0x7ffff7f010c8)
at Objects/dictobject.c:802
802 MAINTAIN_TRACKING(mp, key, value);
Я не уверен, почему MAINTAIN_TRACKING терпит неудачу здесь, и я не могу, кажется, GDB в этот код.