在实际使用中,使用python的ctypes调用c库。
这次出问题的地方是一个C函数,返回值是malloc生成的字符串地址。平常使用也没问题,也用了有段时间, 没发现什么异常。
这次在测试中,发现使用这个过程会出现“段错误”,造成程序退出了。
经过排查, 确定问题原因是C函数的返回值问题,ctypes默认的函数返回类型是int类型。
需要在使用中设置返回类型,例如:
func.restype = c_char_p
![](http://static.oschina.net/uploads/space/2015/0518/143900_4a9U_1396926.png)
参考资料:https://docs.python.org/2/library/ctypes.html