Python用のC拡張を作成しようとしています。この拡張機能は、基本的に単なる二重リンク リストです。
以下は、私が書いたコードの一部です:-
staticforward PyTypeObject linked_list_type;
typedef struct _linked_list_object{
PyObject_HEAD
int val;
struct _linked_list_object *prev;
struct _linked_list_object *next;
} linked_list_object;
//this method adds a new node to the linked list
static linked_list_object* add_node(linked_list_object * obj, int val)
{
linked_list_object* new;
new = PyObject_New(linked_list_object, &linked_list_type);
if (new){
new->val = val;
if (obj)
{
new->prev = obj;
new->next = obj->next;
obj->next = new;
new->next->prev = new;
}
else{
new->next = new;
new->prev = new;
}
return new;
}
else
{
return NULL;
}
このモジュールをコンパイルして python にインポートした後。
コードはセグメンテーション違反をスローします。
>>> import linked_list
Segmentation fault: 11 (core dumped)
コメントアウトすると、このセグメンテーション違反が生成されないことに気付きました
new = PyObject_New(linked_list_object, &linked_list_type);
そしてその下のコード。
このセグメンテーション違反が発生している理由について、誰かが私を助けてくれますか?
私は何かが欠けていることを知っていますが、それが何であるかを理解できません。