我正在编写一个构造 malloc 的函数unsigned char *
数组,然后返回指针。在纯 Cython 或 C 中,这很容易。您所要做的就是在函数上设置返回类型,然后返回指向数组的指针。完毕。但是,我已经达到了需要将指向在 Cython 中创建的数组的指针返回到 Python 的地步。我知道指针就是内存地址。有什么方法可以将 Cython 指针作为 python 对象返回到 Python(例如 int 或 hex,因为内存地址本质上是一个数字),这样我就可以基本上管理 python 中的指针?
我尝试像这样返回指针的值:
cdef unsigned char array[8]
def return_pointer():
return &array
这当然行不通,因为转换无法完成。 Cython 抱怨Cannot convert 'unsigned char (*)[8]' to Python object
。有什么建议么?
EDIT:
我不需要访问Python中指针引用的内存地址中的值,只需传递指针即可。然后我计划使用 Python 对象指针,并用它作为参数调用 c 函数。
您可以将指针强制转换为适当的 C 类型,然后由 Cython 将其转换为 Python 整数。正确的 C 类型是uintptr_t
from <stddef.h>
在 Cython 中可以通过以下方式获得from libc.stdint cimport uintptr_t
。演员阵容当然是写好的<uintptr_t>array_or_pointer
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)