Py_递减分段故障 我在C++中嵌入Python有问题。我使用的是Mingw w64 gcc和64位Python 2.7.11 #include <Python.h> int main(int argc, char *argv[]) { Py_Initialize(); PyObject* pName = PyString_FromString("test"); Py_DECREF(pName); Py_Finalize(); return 0; }
问题是它在Py_DECREF中分离故障。我已尝试展开宏,并将segfault追溯到以下语句:Py_递减分段故障 我在C++中嵌入Python有问题。我使用的是Mingw w64 gcc和64位Python 2.7.11 #include <Python.h> int main(int argc, char *argv[]) { Py_Initialize(); PyObject* pName = PyString_FromString("test"); Py_DECREF(pName); Py_Finalize(); return 0; },python,c++,embedded-language,Python,C++,Embedded Language,问题是它在Py_DECREF中分离故障。我已尝试展开宏,并将segfault追溯到以下语句: ((*(((PyObject*) ((PyObject *) (pName)))->ob_type)->tp_dealloc)((PyObject *) ((PyObject *) (pName)))); 结果,tp_dealloc指向0x1 Python文档中提供的示例代码中也存在同样的问题: 如果我删除了对Py_DECREF(pName)和Py_DECREF(pArgs)的一些调用,
((*(((PyObject*) ((PyObject *) (pName)))->ob_type)->tp_dealloc)((PyObject *) ((PyObject *) (pName))));
结果,tp_dealloc指向0x1
Python文档中提供的示例代码中也存在同样的问题:
如果我删除了对Py_DECREF(pName)和Py_DECREF(pArgs)的一些调用,文档中的代码将按预期工作。然而,我在web上找到的每个示例(包括Python文档中的示例)都调用Py_DECREF
这一错误的原因可能是什么?我的构建环境中可能存在一些不一致性吗?因此,显然,我的环境出了问题。我试着在另一台电脑上编译同样的代码,但是没有了segfault
((*(((PyObject*) ((PyObject *) (pName)))->ob_type)->tp_dealloc)((PyObject *) ((PyObject *) (pName))));