Python PyUnicode_AsUTF8()分段错误
我得到了Python PyUnicode_AsUTF8()分段错误,python,c,segmentation-fault,embedded,Python,C,Segmentation Fault,Embedded,我得到了分段错误。 如何解决这个问题? 我想要的是从uuid4()获取字符串。 谢谢。我可以通过一些修改成功地将其编译并打印出值: gcc test.c `python3.4-config --cflags --ldflags` 我认为问题的原因很可能是:编译python的编译器与编译测试程序test.c时使用的编译器不同。您可以找到正确的gcc版本来编译代码,也可以使用当前的gcc编译器重新编译python3.4 至于test.c的原始版本,它在我的MBP上给出了这个错误: $ ./a.ou
分段错误
。
如何解决这个问题?
我想要的是从uuid4()
获取字符串。
谢谢。我可以通过一些修改成功地将其编译并打印出值:
gcc test.c `python3.4-config --cflags --ldflags`
我认为问题的原因很可能是:编译python的编译器与编译测试程序test.c
时使用的编译器不同。您可以找到正确的gcc版本来编译代码,也可以使用当前的gcc编译器重新编译python3.4
至于test.c的原始版本,它在我的MBP上给出了这个错误:
$ ./a.out
bd94cb52-9278-41a8-bc5a-ad05eff91188
$/a.out
(空)
在中忽略异常:
回溯(最近一次呼叫最后一次):
文件“/usr/local/Frameworks/Python.framework/Versions/3.4/lib/python3.4/threading.py”,第1292行,在
t=_pickSomeNonDaemonThread()
文件“/usr/local/Frameworks/Python.framework/Versions/3.4/lib/python3.4/threading.py”,第1299行,在
对于枚举()中的t:
enumerate中的文件“/usr/local/Frameworks/Python.framework/Versions/3.4/lib/python3.4/threading.py”,第1269行
返回列表(_active.values())+列表(_limbo.values())
TypeError:内置操作的参数类型错误
我真的不知道发生了什么。我遇到了一个
致命的Python错误:使用PyUnicode\u AsUTF8
时XXX块堆栈下溢。
对我来说,诀窍在于该函数使用Python API分配内存,因此必须使用cpython.mem中的PyMem\u Free()
来释放内存
malloc()与free()搭配,就像PyMem_malloc()与PyMem_free()搭配一样。我没有错误。您使用的是什么版本的gcc?在哪个平台上?我得到了这个:“TypeError:内置操作的参数类型错误”。很奇怪。我在OSX 10.9.4上使用llvm gcc(Apple llvm版本6.0(clang-600.0.45.3)),你能编译这个程序吗?是的。让我把这些信息写在答案里。评论是可怕的,顺便说一句,你需要提供更多的信息,正如我前面提到的:什么是gcc版本和平台。你可以编辑这个问题,并把信息放在那里这个版本的作品,但我想找出背后的原因。。。在上面的评论中看到我的Hello world,它对我有效,所以我的第一段代码应该有效,但它没有。
#include <Python.h>
#include <stdio.h>
int
main (int argc, char *argv[])
{
PyObject *pName, *pModule, *pFunc;
PyObject *pValue;
Py_Initialize ();
pName = PyUnicode_FromString ("uuid");
pModule = PyImport_Import (pName);
Py_DECREF (pName);
pFunc = PyObject_GetAttrString (pModule, "uuid4");
pValue = PyObject_CallObject (pFunc, NULL);
PyObject_Print(pValue, stdout, Py_PRINT_RAW); // my change
printf ("\n"); // make the printout look nicer
Py_Finalize ();
return 0;
}
$ ./a.out
bd94cb52-9278-41a8-bc5a-ad05eff91188
$ ./a.out
(null)
Exception ignored in: <module 'threading' from '/usr/local/Frameworks/Python.framework/Versions/3.4/lib/python3.4/threading.py'>
Traceback (most recent call last):
File "/usr/local/Frameworks/Python.framework/Versions/3.4/lib/python3.4/threading.py", line 1292, in _shutdown
t = _pickSomeNonDaemonThread()
File "/usr/local/Frameworks/Python.framework/Versions/3.4/lib/python3.4/threading.py", line 1299, in _pickSomeNonDaemonThread
for t in enumerate():
File "/usr/local/Frameworks/Python.framework/Versions/3.4/lib/python3.4/threading.py", line 1269, in enumerate
return list(_active.values()) + list(_limbo.values())
TypeError: bad argument type for built-in operation