擅长:python、mysql、java
<p>segfault是由于Python回调中错误的指针处理造成的。指针间接寻址的级别比严格的必需级别多,这可能是造成混淆的原因。在Python回调中设置<code>p_p_i.contents</code>,但这只会更改Python ctypes对象</em>指向的内容,而不是底层指针。为此,可以通过数组访问语法来进行指针反引用。一个经过提炼的例子:</p>
<pre><code>ip = ctypes.POINTER(ctypes.c_int)()
i = ctypes.c_int(99)
# Wrong way
ipp = ctypes.pointer(ip)
ipp.contents = ctypes.pointer(i)
print bool(ip) # False > still NULL
# Right way
ipp = ctypes.pointer(ip)
ipp[0] = ctypes.pointer(i)
print ip[0] # 99 > success!
</code></pre>
<p>类型错误是由peterhansen的答案中描述的类型不兼容造成的。在</p>